[LON-CAPA-cvs] cvs: loncom(version_2_11_X) /interface domainprefs.pm

raeburn raeburn at source.lon-capa.org
Sat May 2 14:36:19 EDT 2020


raeburn		Sat May  2 18:36:19 2020 EDT

  Modified files:              (Branch: version_2_11_X)
    /loncom/interface	domainprefs.pm 
  Log:
  - For 2.11
    Backport 1.371
  
  
-------------- next part --------------
Index: loncom/interface/domainprefs.pm
diff -u loncom/interface/domainprefs.pm:1.160.6.104 loncom/interface/domainprefs.pm:1.160.6.105
--- loncom/interface/domainprefs.pm:1.160.6.104	Sun Feb  9 05:18:20 2020
+++ loncom/interface/domainprefs.pm	Sat May  2 18:36:17 2020
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Handler to set domain-wide configuration settings
 #
-# $Id: domainprefs.pm,v 1.160.6.104 2020/02/09 05:18:20 raeburn Exp $
+# $Id: domainprefs.pm,v 1.160.6.105 2020/05/02 18:36:17 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -4653,13 +4653,18 @@
     if ($position eq 'top') {
         if (keys(%serverhomes) > 1) {
             my %spareid = &current_offloads_to($dom,$settings,\%servers);
-            my $curroffloadnow;
+            my ($curroffloadnow,$curroffloadoth);
             if (ref($settings) eq 'HASH') {
                 if (ref($settings->{'offloadnow'}) eq 'HASH') {
                     $curroffloadnow = $settings->{'offloadnow'};
                 }
+                if (ref($settings->{'offloadoth'}) eq 'HASH') {
+                    $curroffloadoth = $settings->{'offloadoth'};
+                }
             }
-            $datatable .= &spares_row($dom,\%servers,\%spareid,\%serverhomes,\%altids,$curroffloadnow,$rowtotal);
+            my $other_insts = scalar(keys(%by_location));
+            $datatable .= &spares_row($dom,\%servers,\%spareid,\%serverhomes,\%altids,
+                                      $other_insts,$curroffloadnow,$curroffloadoth,$rowtotal);
         } else {
             $datatable .= '<tr'.$css_class.'><td colspan="2">'.
                           &mt('Nothing to set here, as the cluster to which this domain belongs only contains one server.');
@@ -4909,7 +4914,8 @@
 }
 
 sub spares_row {
-    my ($dom,$servers,$spareid,$serverhomes,$altids,$curroffloadnow,$rowtotal) = @_;
+    my ($dom,$servers,$spareid,$serverhomes,$altids,$other_insts,
+        $curroffloadnow,$curroffloadoth,$rowtotal) = @_;
     my $css_class;
     my $numinrow = 4;
     my $itemcount = 1;
@@ -4929,12 +4935,17 @@
                 }
             }
             next unless (ref($spareid->{$server}) eq 'HASH');
-            my $checkednow;
+            my ($checkednow,$checkedoth);
             if (ref($curroffloadnow) eq 'HASH') {
                 if ($curroffloadnow->{$server}) {
                     $checkednow = ' checked="checked"';
                 }
             }
+            if (ref($curroffloadoth) eq 'HASH') {
+                if ($curroffloadoth->{$server}) {
+                    $checkedoth = ' checked="checked"';
+                }
+            }
             $css_class = $itemcount%2 ? ' class="LC_odd_row"' : '';
             $datatable .= '<tr'.$css_class.'>
                            <td rowspan="2">
@@ -4943,8 +4954,15 @@
                               ,'<b>'.$server.'</b>').'</span><br />'.
                           '<span class="LC_nobreak">'."\n".
                           '<label><input type="checkbox" name="offloadnow" value="'.$server.'"'.$checkednow.' />'.
-                          ' '.&mt('Switch active users on next access').'</label></span>'.
+                          ' '.&mt('Switch any active user on next access').'</label></span>'.
                           "\n";
+            if ($other_insts) {
+                $datatable .= '<br />'.
+                              '<span class="LC_nobreak">'."\n".
+                          '<label><input type="checkbox" name="offloadoth" value="'.$server.'"'.$checkedoth.' />'.
+                          ' '.&mt('Switch other institutions on next access').'</label></span>'.
+                          "\n";
+            }
             my (%current,%canselect);
             my @choices = 
                 &possible_newspares($server,$spareid->{$server},$serverhomes,$altids);
@@ -14621,6 +14639,7 @@
         }
     }
     $defaultshash{'usersessions'}{'offloadnow'} = {};
+    $defaultshash{'usersessions'}{'offloadoth'} = {};
     my @offloadnow = &Apache::loncommon::get_env_multiple('form.offloadnow');
     my @okoffload;
     if (@offloadnow) {
@@ -14637,6 +14656,22 @@
             }
         }
     }
+    my @offloadoth = &Apache::loncommon::get_env_multiple('form.offloadoth');
+    my @okoffloadoth;
+    if (@offloadoth) {
+        foreach my $server (@offloadoth) {
+            if (&Apache::lonnet::hostname($server) ne '') {
+                unless (grep(/^\Q$server\E$/, at okoffloadoth)) {
+                    push(@okoffloadoth,$server);
+                }
+            }
+        }
+        if (@okoffloadoth) {
+            foreach my $lonhost (@okoffloadoth) {
+                $defaultshash{'usersessions'}{'offloadoth'}{$lonhost} = 1;
+            }
+        }
+    }
     if (ref($domconfig{'usersessions'}) eq 'HASH') {
         if (ref($domconfig{'usersessions'}{'spares'}) eq 'HASH') {
             if (ref($changes{'spares'}) eq 'HASH') {
@@ -14647,26 +14682,38 @@
         } else {
             $savespares = 1;
         }
-        if (ref($domconfig{'usersessions'}{'offloadnow'}) eq 'HASH') {
-            foreach my $lonhost (keys(%{$domconfig{'usersessions'}{'offloadnow'}})) {
-                unless ($defaultshash{'usersessions'}{'offloadnow'}{$lonhost}) {
-                    $changes{'offloadnow'} = 1;
-                    last;
-                }
-            }
-            unless ($changes{'offloadnow'}) {
-                foreach my $lonhost (keys(%{$defaultshash{'usersessions'}{'offloadnow'}})) {
-                    unless ($domconfig{'usersessions'}{'offloadnow'}{$lonhost}) {
-                        $changes{'offloadnow'} = 1;
+        foreach my $offload ('offloadnow','offloadoth') {
+            if (ref($domconfig{'usersessions'}{$offload}) eq 'HASH') {
+                foreach my $lonhost (keys(%{$domconfig{'usersessions'}{$offload}})) {
+                    unless ($defaultshash{'usersessions'}{$offload}{$lonhost}) {
+                        $changes{$offload} = 1;
                         last;
                     }
                 }
+                unless ($changes{$offload}) {
+                    foreach my $lonhost (keys(%{$defaultshash{'usersessions'}{$offload}})) {
+                        unless ($domconfig{'usersessions'}{$offload}{$lonhost}) {
+                            $changes{$offload} = 1;
+                            last;
+                        }
+                    }
+                }
+            } else {
+                if (($offload eq 'offloadnow') && (@okoffload)) {
+                     $changes{'offloadnow'} = 1;
+                }
+                if (($offload eq 'offloadoth') && (@okoffloadoth)) {
+                    $changes{'offloadoth'} = 1;
+                }
             }
-        } elsif (@okoffload) {
+        }
+    } else {
+        if (@okoffload) {
             $changes{'offloadnow'} = 1;
         }
-    } elsif (@okoffload) {
-        $changes{'offloadnow'} = 1;
+        if (@okoffloadoth) {
+            $changes{'offloadoth'} = 1;
+        }
     }
     my $nochgmsg = &mt('No changes made to settings for user session hosting/offloading.');
     if ((keys(%changes) > 0) || ($savespares)) {
@@ -14683,6 +14730,9 @@
                 if (ref($defaultshash{'usersessions'}{'offloadnow'}) eq 'HASH') {
                     $domdefaults{'offloadnow'} = $defaultshash{'usersessions'}{'offloadnow'};
                 }
+                if (ref($defaultshash{'usersessions'}{'offloadoth'}) eq 'HASH') {
+                    $domdefaults{'offloadoth'} = $defaultshash{'usersessions'}{'offloadoth'};
+                }
             }
             my $cachetime = 24*60*60;
             &Apache::lonnet::do_cache_new('domdefaults',$dom,\%domdefaults,$cachetime);
@@ -14756,16 +14806,31 @@
                 if ($changes{'offloadnow'}) {
                     if (ref($defaultshash{'usersessions'}{'offloadnow'}) eq 'HASH') {
                         if (keys(%{$defaultshash{'usersessions'}{'offloadnow'}}) > 0) {
-                            $resulttext .= '<li>'.&mt('Switch active users on next access, for server(s):').'<ul>';
+                            $resulttext .= '<li>'.&mt('Switch any active user on next access, for server(s):').'<ul>';
                             foreach my $lonhost (sort(keys(%{$defaultshash{'usersessions'}{'offloadnow'}}))) {
                                 $resulttext .= '<li>'.$lonhost.'</li>';
                             }
                             $resulttext .= '</ul>';
                         } else {
-                            $resulttext .= '<li>'.&mt('No servers now set to switch active users on next access.');
+                            $resulttext .= '<li>'.&mt('No servers now set to switch any active user on next access.');
+                        }
+                    } else {
+                        $resulttext .= '<li>'.&mt('No servers now set to switch any active user on next access.').'</li>';
+                    }
+                }
+                if ($changes{'offloadoth'}) {
+                    if (ref($defaultshash{'usersessions'}{'offloadoth'}) eq 'HASH') {
+                        if (keys(%{$defaultshash{'usersessions'}{'offloadoth'}}) > 0) {
+                            $resulttext .= '<li>'.&mt('Switch other institutions on next access, for server(s):').'<ul>';
+                            foreach my $lonhost (sort(keys(%{$defaultshash{'usersessions'}{'offloadoth'}}))) {
+                                $resulttext .= '<li>'.$lonhost.'</li>';
+                            }
+                            $resulttext .= '</ul>';
+                        } else {
+                            $resulttext .= '<li>'.&mt('No servers now set to switch other institutions on next access.');
                         }
                     } else {
-                        $resulttext .= '<li>'.&mt('No servers now set to switch active users on next access.').'</li>';
+                        $resulttext .= '<li>'.&mt('No servers now set to switch other institutions on next access.').'</li>';
                     }
                 }
                 $resulttext .= '</ul>';


More information about the LON-CAPA-cvs mailing list