--- loncom/interface/lonconfigsettings.pm	2024/07/03 16:35:11	1.21.4.14
+++ loncom/interface/lonconfigsettings.pm	2014/02/12 20:37:42	1.28
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Handler to set domain-wide configuration settings
 #
-# $Id: lonconfigsettings.pm,v 1.21.4.14 2024/07/03 16:35:11 raeburn Exp $
+# $Id: lonconfigsettings.pm,v 1.28 2014/02/12 20:37:42 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -35,20 +35,16 @@ use Apache::lonnet;
 use Apache::loncommon();
 use Apache::lonhtmlcommon();
 use Apache::lonlocal;
-use Apache::courseclassifier();
-use LONCAPA qw(:DEFAULT :match);
+use Apache::lonparmset();
 
 sub print_header {
-    my ($r,$phase,$context,$jscript,$container,$instcode,$dom) = @_;
-    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');
-    }
+    my ($r,$phase,$context,$jscript,$container) = @_;
+    my ($pagetitle,$brcrumtitle,$action,$call_category_check,$crstype);
     if ($context eq 'domain') {
         ($pagetitle, $brcrumtitle) = ('View/Modify Domain Settings','View/Modify Domain Settings');
         $action = '/adm/domainprefs';
         if ($phase eq 'display') {
+            my @actions = &Apache::loncommon::get_env_multiple('form.actions');
             if (grep(/^coursecategories$/,@actions)) {
                 $call_category_check = qq|
     if (formname == document.display) {
@@ -67,58 +63,8 @@ sub print_header {
             ($pagetitle,$brcrumtitle) = ('Course Configuration','Course Configuration');
         }
         $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.');
-    &js_escape(\$alert);
     my $js = '
 <script type="text/javascript">
 // <![CDATA[
@@ -145,15 +91,15 @@ function changePage(formname,newphase) {
             return;
         }
     }
-    '.$instcode_check.$call_category_check.'
+    '.$call_category_check.'
     formname.submit();
 }'."\n";
     if ($phase eq 'pickactions') {
-        $js .= &Apache::lonhtmlcommon::color_picker();
+	$js .= &Apache::lonhtmlcommon::color_picker();
         $js .=
             &Apache::lonhtmlcommon::set_form_elements({actions => 'checkbox'})."\n";
     } elsif ($phase eq 'display') {
-        $js .= &Apache::lonhtmlcommon::color_picker();
+	$js .= &Apache::lonhtmlcommon::color_picker();
         $js .= &color_pick_js()."\n";
     }
     $js .= &Apache::loncommon::viewport_size_js().'
@@ -174,87 +120,6 @@ $jscript
                     'onload' => "setFormElements(document.pickactions);",
                         );
         $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(/^wafproxy$/,@actions)) {
-                $onload .= "toggleWAF();checkWAF();updateWAF();";
-            }
-            if (grep(/^scantron$/,@actions)) {
-                $onload .= "toggleScantron(document.display);";
-            }
-            if (grep(/^autoupdate$/,@actions)) {
-                $onload .= "toggleLastActiveDays(document.display);";
-            }
-            if (grep(/^autoenroll$/,@actions)) {
-                $onload .= "toggleFailsafe(document.display);";
-            }
-            if (grep(/^login$/,@actions)) {
-                my %domservers = &Apache::lonnet::get_servers($dom);
-                foreach my $server (sort(keys(%domservers))) {
-                    $onload .= "toggleSamlOptions(document.display,'$server');";
-                }
-            }
-            if ($onload) {
-                my %loaditems = (
-                                  'onload' => $onload,
-                                );
-                $additem = {'add_entries' => \%loaditems,};
-            }
-        } elsif ($context eq 'course') {
-            my $onload;
-            if (grep(/^courseinfo$/,@actions)) {
-                if (@code_order) {
-                    $onload = "courseSet('','load');toggleCloners(document.display.cloners_instcode);";
-                }
-            }
-            if (grep(/^grading$/,@actions)) {
-                $onload .= 'toggleGrading(document.display);toggleHiddenTotalsSec(document.display);';
-            }
-            if ($onload) {
-                my %loaditems = (
-                                  'onload' => $onload,
-                                );
-                $additem = {'add_entries' => \%loaditems,};
-            }
-        }
     }
     $r->print(&Apache::loncommon::start_page($pagetitle,$js,$additem));
     $r->print(&Apache::lonhtmlcommon::breadcrumbs($brcrumtitle));
@@ -265,13 +130,16 @@ $jscript
 <input type="hidden" name="pres_value" />
 </form>
 ');
+    if ($container) {
+       &Apache::lonparmset::startSettingsScreen($r,$container,$crstype);
+    }
     $r->print('<form method="post" name="'.$phase.'" action="'.$action.'"'.
               ' enctype="multipart/form-data">');
     return;
 }
 
 sub print_footer {
-    my ($r,$phase,$newphase,$button_text,$actions,$container,$parm_permission) = @_;
+    my ($r,$phase,$newphase,$button_text,$actions,$container) = @_;
     $button_text = &mt($button_text);
     $r->print('<input type="hidden" name="phase" value="" />');
     if (defined($env{'form.origin'})) {
@@ -296,27 +164,21 @@ sub print_footer {
         } else {
             $onclick = '"javascript:changePage(document.'.$phase.','."'$newphase'".')"';
         }
-        my $showbutton = 1;
-        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>');
-        }
+        $r->print('<p><input type="button" name="store" value="'.
+                  $button_text.'" onclick='.$onclick.' /></p>');
     }
     if ($phase eq 'process') {
         $r->print('</form>');
+        if ($container) {
+           &Apache::lonparmset::endSettingsScreen($r);
+        }
         $r->print(&Apache::loncommon::end_page());
     }
     return;
 }
 
 sub make_changes {
-    my ($r,$dom,$phase,$context,$prefs_order,$prefs,$values,$confname,$roles,
-        $allitems,$container,$parm_permission) = @_;
+    my ($r,$dom,$phase,$context,$prefs_order,$prefs,$values,$confname,$roles,$allitems,$container) = @_;
     my %brcrumtext = &get_crumb_text();
     my @actions = &Apache::loncommon::get_env_multiple('form.actions');
     my ($numchanged,%changes,%disallowed);
@@ -326,7 +188,7 @@ sub make_changes {
        {href=>"javascript:changePage(document.$phase,'$phase')",
         text=>"Updated"});
     &print_header($r,$phase,$context,undef,$container);
-    my ($crstype,%lastact,$errors);
+    my ($crstype,%lastact);
     if ($context eq 'course') {
         $crstype = &Apache::loncommon::course_type();
     }
@@ -340,10 +202,9 @@ sub make_changes {
                                           $confname,$item,$roles,$values,\%lastact));
                 } else {
                     $changes{$item} = {};
-                    $errors =
-                        &Apache::courseprefs::process_changes($dom,$item,$values,
-                                                              $prefs->{$item},$changes{$item},
-                                                              $allitems,\%disallowed,$crstype);
+                    &Apache::courseprefs::process_changes($dom,$item,$values,
+                                                          $prefs->{$item},$changes{$item},
+                                                          $allitems,\%disallowed,$crstype);
                     if (keys(%{$changes{$item}}) > 0) {
                         $numchanged ++;
                     }
@@ -375,33 +236,26 @@ sub make_changes {
             }
             $r->print('</p>');
         }
-        if ($errors) {
-            $r->print('<p>'.$errors.'</p>');
-        }
     }
     $r->print('<p>');
     my $footer_text = 'Back to configuration display';
     if ($context eq 'course') {
         $footer_text = 'Back to display/edit settings'; 
     }
-    &print_footer($r,$phase,'display',$footer_text,\@actions,$container,$parm_permission);
+    &print_footer($r,$phase,'display',$footer_text,\@actions,$container);
     $r->print('</p>');
     return \%lastact;
 }
 
 sub display_settings {
     my ($r,$dom,$phase,$context,$prefs_order,$prefs,$values,$confname,$jscript,
-        $allitems,$crstype,$container,$parm_permission) = @_;
+        $allitems,$crstype,$container) = @_;
     my %brcrumtext = &get_crumb_text();
     my @actions = &Apache::loncommon::get_env_multiple('form.actions');
     &Apache::lonhtmlcommon::add_breadcrumb
         ({href=>"javascript:changePage(document.$phase,'display')",
           text=>"Display/Edit Settings"});
-    my $instcode;
-    if (ref($values) eq 'HASH') {
-        $instcode = $values->{'internal.coursecode'};
-    }
-    &print_header($r,$phase,$context,$jscript,$container,$instcode,$dom);
+    &print_header($r,$phase,$context,$jscript,$container);
     my $divwidth = 900;
     if ((ref($prefs_order) eq 'ARRAY') && (ref($prefs) eq 'HASH') && (ref($values) eq 'HASH')) { 
         if (@actions > 0) {
@@ -411,10 +265,7 @@ sub display_settings {
                 if (grep(/^\Q$item\E$/,@actions)) {
                     push(@items,$item);
                     if ($context eq 'domain') {
-                        my $settings;
-                        if (ref($values) eq 'HASH') {
-                            $settings = $values->{$item};
-                        }
+                        my $settings = $values->{$item}; 
                         if ($item eq 'usersessions') {
                             $r->print('<script type="text/javascript">'."\n".
                                       '// <![CDATA['."\n".
@@ -422,29 +273,7 @@ sub display_settings {
                                       '// ]]>'."\n".
                                       '</script>'."\n");
                         } elsif ($item eq 'selfcreation') {
-                            if (ref($values) eq 'HASH') {
-                                $settings = $values->{'usercreation'};
-                            }
-                        } elsif ($item eq 'defaults') {
-                            if (ref($values->{'inststatus'}) eq 'HASH') {
-                                if (ref($values->{'defaults'}) eq 'HASH') {
-                                    $settings = {%{$values->{'inststatus'}},%{$values->{'defaults'}}};
-                                } else {
-                                    $settings = $values->{'inststatus'};
-                                }
-                            } else {
-                                my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);
-                                my $inststatus = {
-                                                   inststatustypes => $usertypes,
-                                                   inststatusorder => $types,
-                                                   inststatusguest => [],
-                                                 };
-                                if (ref($values->{defaults}) eq 'HASH') {
-                                    $settings = {%{$inststatus},%{$values->{'defaults'}}};
-                                } else {
-                                    $settings = $inststatus;
-                                }
-                            }
+                            $settings = $values->{'usercreation'};
                         }
                         ($output{$item},$rowtotal{$item}) =
                             &Apache::domainprefs::print_config_box($r,$dom,$confname,
@@ -452,7 +281,7 @@ sub display_settings {
                     } else {
                         ($output{$item},$rowtotal{$item}) =
                             &Apache::courseprefs::print_config_box($r,$dom,$phase,
-                                $item,$prefs->{$item},$values,$allitems,$crstype,$parm_permission);
+                                $item,$prefs->{$item},$values,$allitems,$crstype);
                     }
                     $rowsum += $rowtotal{$item};
                 }
@@ -462,7 +291,7 @@ sub display_settings {
                 $r->print($output{$items[$i]});
             }
             $r->print('</div>');
-            $r->print(&print_footer($r,$phase,'process','Save Changes',\@actions,$container,$parm_permission));
+            $r->print(&print_footer($r,$phase,'process','Save Changes',\@actions,$container));
         } else {
             $r->print('<input type="hidden" name="phase" value="" />'.
                       '<span class="LC_error">'.&mt('No settings chosen').
@@ -470,12 +299,15 @@ sub display_settings {
         }
         $r->print('</form>');
     }
+    if ($container) {
+        &Apache::lonparmset::endSettingsScreen($r);
+    }
     $r->print(&Apache::loncommon::end_page());
     return;
 }
 
 sub display_choices {
-    my ($r,$phase,$context,$prefs_order,$prefs,$container,$parm_permission) = @_;
+    my ($r,$phase,$context,$prefs_order,$prefs,$container) = @_;
     if ($phase eq '') {
         $phase = 'pickactions';
     }
@@ -486,13 +318,7 @@ sub display_choices {
               &Apache::loncommon::check_uncheck_jscript()."\n".
               '// ]]>'."\n".
               '</script>'."\n");
-    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>'.
+    $r->print('<h3>'.&mt('Settings to display/modify').'</h3>'.
               '<div><input type="button" value="'.&mt('check all').'" '.
               'onclick="javascript:checkAll(document.pickactions.actions)"'.
               ' />'.('&nbsp;'x2).
@@ -528,10 +354,13 @@ sub display_choices {
                 $thirddiv = 1;
             }
         }
+        $r->print('</div><br clear="all" />');
     }
-    $r->print('</div><div style="padding:0;clear:both;margin:0;border:0"></div>');
-    $r->print(&print_footer($r,$phase,'display','Display',undef,$container,$parm_permission));
+    $r->print(&print_footer($r,$phase,'display','Display',undef,$container));
     $r->print('</form>');
+    if ($container) {
+        &Apache::lonparmset::endSettingsScreen($r);
+    }
     $r->print(&Apache::loncommon::end_page());
     return;
 }