Diff for /loncom/interface/domainprefs.pm between versions 1.137 and 1.140

version 1.137, 2010/07/17 20:02:07 version 1.140, 2010/10/05 18:42:45
Line 340  sub handler { Line 340  sub handler {
         'coursedefaults' =>           'coursedefaults' => 
                  {text => 'Course/Community defaults',                   {text => 'Course/Community defaults',
                   help => 'Domain_Configuration_Course_Defaults',                    help => 'Domain_Configuration_Course_Defaults',
                   header => [{col1 => 'Setting',                    header => [{col1 => 'Defaults which can be overridden in each course by a CC',
                               col2 => 'Value',}],                                col2 => 'Value',},
                                {col1 => 'Defaults which can be overridden for each course by a DC',
                                 col2 => 'Value',},],
                  },                   },
         'privacy' =>           'privacy' => 
                  {text   => 'User Privacy',                   {text   => 'User Privacy',
Line 517  sub print_config_box { Line 519  sub print_config_box {
             $output .= &print_usersessions('top',$dom,$settings,\$rowtotal);               $output .= &print_usersessions('top',$dom,$settings,\$rowtotal); 
         } elsif ($action eq 'rolecolors') {          } elsif ($action eq 'rolecolors') {
             $output .= &print_rolecolors($phase,'student',$dom,$confname,$settings,\$rowtotal);              $output .= &print_rolecolors($phase,'student',$dom,$confname,$settings,\$rowtotal);
           } elsif ($action eq 'coursedefaults') {
               $output .= &print_coursedefaults('top',$dom,$settings,\$rowtotal);
         }          }
         $output .= '          $output .= '
            </table>             </table>
Line 580  sub print_config_box { Line 584  sub print_config_box {
             $output .= &print_helpsettings('bottom',$dom,$confname,$settings,\$rowtotal);              $output .= &print_helpsettings('bottom',$dom,$confname,$settings,\$rowtotal);
         } elsif ($action eq 'usersessions') {          } elsif ($action eq 'usersessions') {
             $output .= &print_usersessions('bottom',$dom,$settings,\$rowtotal);              $output .= &print_usersessions('bottom',$dom,$settings,\$rowtotal);
           } elsif ($action eq 'coursedefaults') {
               $output .= &print_coursedefaults('bottom',$dom,$settings,\$rowtotal);
         } elsif ($action eq 'rolecolors') {          } elsif ($action eq 'rolecolors') {
             $output .= &print_rolecolors($phase,'coordinator',$dom,$confname,$settings,\$rowtotal).'              $output .= &print_rolecolors($phase,'coordinator',$dom,$confname,$settings,\$rowtotal).'
            </table>             </table>
Line 668  sub print_config_box { Line 674  sub print_config_box {
             $output .= &print_serverstatuses($dom,$settings,\$rowtotal);              $output .= &print_serverstatuses($dom,$settings,\$rowtotal);
         } elsif ($action eq 'helpsettings') {          } elsif ($action eq 'helpsettings') {
             $output .= &print_helpsettings('top',$dom,$confname,$settings,\$rowtotal);              $output .= &print_helpsettings('top',$dom,$confname,$settings,\$rowtotal);
     } elsif ($action eq 'coursedefaults') {  
             $output .= &print_coursedefaults($dom,$settings,\$rowtotal);  
         }          }
     }      }
     $output .= '      $output .= '
Line 2240  sub radiobutton_prefs { Line 2244  sub radiobutton_prefs {
 }  }
   
 sub print_coursedefaults {  sub print_coursedefaults {
     my ($dom,$settings,$rowtotal) = @_;      my ($position,$dom,$settings,$rowtotal) = @_;
     my ($css_class,$datatable);      my ($css_class,$datatable);
     my $itemcount = 1;      my $itemcount = 1;
     my (%checkedon,%checkedoff,%choices,%defaultchecked,@toggles);      if ($position eq 'top') {
     %choices =          my (%checkedon,%checkedoff,%choices,%defaultchecked,@toggles);
         &Apache::lonlocal::texthash (          %choices =
             canuse_pdfforms => 'Course/Community users can create/upload PDF forms',              &Apache::lonlocal::texthash (
     );                  canuse_pdfforms => 'Course/Community users can create/upload PDF forms',
     %defaultchecked = ('canuse_pdfforms' => 'off');          );
     @toggles = ('canuse_pdfforms',);          %defaultchecked = ('canuse_pdfforms' => 'off');
     ($datatable,$itemcount) = &radiobutton_prefs($settings,\@toggles,\%defaultchecked,          @toggles = ('canuse_pdfforms',);
           ($datatable,$itemcount) = &radiobutton_prefs($settings,\@toggles,\%defaultchecked,
                                                  \%choices,$itemcount);                                                   \%choices,$itemcount);
     $$rowtotal += $itemcount;          $$rowtotal += $itemcount;
       } else {
           $css_class = $itemcount%2 ? ' class="LC_odd_row"' : '';
           my %choices =
               &Apache::lonlocal::texthash (
                   anonsurvey_threshold => 'Responder count needed before showing submissions for anonymous surveys',
           );
           my $currdefresponder;
           if (ref($settings) eq 'HASH') {
               $currdefresponder = $settings->{'anonsurvey_threshold'};
           }
           if (!$currdefresponder) {
               $currdefresponder = 10;
           } elsif ($currdefresponder < 1) {
               $currdefresponder = 1;
           }
           $datatable .=
                  '<tr'.$css_class.'><td><span class="LC_nobreak">'.$choices{'anonsurvey_threshold'}.
                   '</span></td>'.
                   '<td class="LC_right_item"><span class="LC_nobreak">'.
                   '<input type="text" name="anonsurvey_threshold"'.
                   ' value="'.$currdefresponder.'" size="5" /></span>'.
                   '</td></tr>';
       }
     return $datatable;      return $datatable;
 }  }
   
 sub print_usersessions {  sub print_usersessions {
     my ($position,$dom,$settings,$rowtotal) = @_;      my ($position,$dom,$settings,$rowtotal) = @_;
     my ($css_class,$datatable,%checked,%choices);      my ($css_class,$datatable,%checked,%choices);
       my (%by_ip,%by_location,@intdoms);
       &build_location_hashes(\@intdoms,\%by_ip,\%by_location);
       if (keys(%by_location) == 0) {
           if ($position eq 'top') {
               $datatable .= '<tr'.$css_class.'><td colspan="2">'.
                             &mt('Nothing to set here, as the cluster to which this domain belongs only contains this institution.');
           }
       }
     my %lt = &usersession_titles();      my %lt = &usersession_titles();
     my $itemcount = 1;      my $itemcount = 1;
     my $numinrow = 6;      my $numinrow = 5;
     my $prefix;      my $prefix;
     my @types;      my @types;
     if ($position eq 'top') {      if ($position eq 'top') {
Line 2270  sub print_usersessions { Line 2306  sub print_usersessions {
     } else {      } else {
         $prefix = 'remote';          $prefix = 'remote';
         @types = ('version','excludedomain','includedomain');          @types = ('version','excludedomain','includedomain');
     }       }
     my (%current,%checkedon,%checkedoff);      my (%current,%checkedon,%checkedoff);
     my @lcversions = &Apache::lonnet::all_loncaparevs();      my @lcversions = &Apache::lonnet::all_loncaparevs();
     my @alldoms = sort(&Apache::lonnet::all_domains());      my @locations = sort(keys(%by_location));
     foreach my $type (@types) {      foreach my $type (@types) {
         $checkedon{$type} = '';          $checkedon{$type} = '';
         $checkedoff{$type} = ' checked="checked"';          $checkedoff{$type} = ' checked="checked"';
Line 2295  sub print_usersessions { Line 2331  sub print_usersessions {
         }          }
     }      }
     foreach my $type (@types) {      foreach my $type (@types) {
           next if ($type ne 'version' && !@locations);
         $css_class = $itemcount%2 ? ' class="LC_odd_row"' : '';          $css_class = $itemcount%2 ? ' class="LC_odd_row"' : '';
         $datatable .= '<tr'.$css_class.'>          $datatable .= '<tr'.$css_class.'>
                        <td><span class="LC_nobreak">'.$lt{$type}.'</span><br />                         <td><span class="LC_nobreak">'.$lt{$type}.'</span><br />
Line 2322  sub print_usersessions { Line 2359  sub print_usersessions {
                          "\n".                           "\n".
                          '</div><div><table>';                           '</div><div><table>';
             my $rem;              my $rem;
             for (my $i=0; $i<@alldoms; $i++) {              for (my $i=0; $i<@locations; $i++) {
                 next if ($alldoms[$i] eq $dom);                  my ($showloc,$value,$checkedtype);
                 my $checkedtype;                  if (ref($by_location{$locations[$i]}) eq 'ARRAY') {
                 if (ref($current{$type}) eq 'ARRAY') {                      my $ip = $by_location{$locations[$i]}->[0];
                     if (grep(/^\Q$alldoms[$i]\E$/,@{$current{$type}})) {                      if (ref($by_ip{$ip}) eq 'ARRAY') {
                         $checkedtype = ' checked="checked"';                          $value = join(':',@{$by_ip{$ip}});
                           $showloc = join(', ',@{$by_ip{$ip}});
                           if (ref($current{$type}) eq 'ARRAY') {
                               foreach my $loc (@{$by_ip{$ip}}) {  
                                   if (grep(/^\Q$loc\E$/,@{$current{$type}})) {
                                       $checkedtype = ' checked="checked"';
                                       last;
                                   }
                               }
                           }
                     }                      }
                 }                  }
                 $rem = $i%($numinrow);                  $rem = $i%($numinrow);
Line 2340  sub print_usersessions { Line 2386  sub print_usersessions {
                 $datatable .= '<td class="LC_left_item">'.                  $datatable .= '<td class="LC_left_item">'.
                               '<span class="LC_nobreak"><label>'.                                '<span class="LC_nobreak"><label>'.
                               '<input type="checkbox" name="'.$prefix.'_'.$type.                                '<input type="checkbox" name="'.$prefix.'_'.$type.
                               '" value="'.$alldoms[$i].'"'.$checkedtype.' />'.$alldoms[$i].                                '" value="'.$value.'"'.$checkedtype.' />'.$showloc.
                               '</label></span></td>';                                '</label></span></td>';
             }              }
             $rem = @alldoms%($numinrow);              $rem = @locations%($numinrow);
             my $colsleft = $numinrow - $rem;              my $colsleft = $numinrow - $rem;
             if ($colsleft > 1 ) {              if ($colsleft > 1 ) {
                 $datatable .= '<td colspan="'.$colsleft.'" class="LC_left_item">'.                  $datatable .= '<td colspan="'.$colsleft.'" class="LC_left_item">'.
Line 2360  sub print_usersessions { Line 2406  sub print_usersessions {
     return $datatable;      return $datatable;
 }  }
   
   sub build_location_hashes {
       my ($intdoms,$by_ip,$by_location) = @_;
       return unless((ref($intdoms) eq 'ARRAY') && (ref($by_ip) eq 'HASH') &&
                     (ref($by_location) eq 'HASH')); 
       my %iphost = &Apache::lonnet::get_iphost();
       my $primary_id = &Apache::lonnet::domain($env{'request.role.domain'},'primary');
       my $primary_ip = &Apache::lonnet::get_host_ip($primary_id);
       if (ref($iphost{$primary_ip}) eq 'ARRAY') {
           foreach my $id (@{$iphost{$primary_ip}}) {
               my $intdom = &Apache::lonnet::internet_dom($id);
               unless(grep(/^\Q$intdom\E$/,@{$intdoms})) {
                   push(@{$intdoms},$intdom);
               }
           }
       }
       foreach my $ip (keys(%iphost)) {
           if (ref($iphost{$ip}) eq 'ARRAY') {
               foreach my $id (@{$iphost{$ip}}) {
                   my $location = &Apache::lonnet::internet_dom($id);
                   if ($location) {
                       next if (grep(/^\Q$location\E$/,@{$intdoms}));
                       if (ref($by_ip->{$ip}) eq 'ARRAY') {
                           unless(grep(/^\Q$location\E$/,@{$by_ip->{$ip}})) {
                               push(@{$by_ip->{$ip}},$location);
                           }
                       } else {
                           $by_ip->{$ip} = [$location];
                       }
                   }
               }
           }
       }
       foreach my $ip (sort(keys(%{$by_ip}))) {
           if (ref($by_ip->{$ip}) eq 'ARRAY') {
               @{$by_ip->{$ip}} = sort(@{$by_ip->{$ip}});
               my $first = $by_ip->{$ip}->[0];
               if (ref($by_location->{$first}) eq 'ARRAY') {
                   unless (grep(/^\Q$ip\E$/,@{$by_location->{$first}})) {
                       push(@{$by_location->{$first}},$ip);
                   }
               } else {
                   $by_location->{$first} = [$ip];
               }
           }
       }
       return;
   }
   
 sub contact_titles {  sub contact_titles {
     my %titles = &Apache::lonlocal::texthash (      my %titles = &Apache::lonlocal::texthash (
                    'supportemail' => 'Support E-mail address',                     'supportemail' => 'Support E-mail address',
Line 6605  sub modify_coursedefaults { Line 6699  sub modify_coursedefaults {
             }              }
             $defaultshash{'coursedefaults'}{$item} = $env{'form.'.$item};              $defaultshash{'coursedefaults'}{$item} = $env{'form.'.$item};
         }          }
           my $currdefresponder = $domconfig{'coursedefaults'}{'anonsurvey_threshold'};
           my $newdefresponder = $env{'form.anonsurvey_threshold'};
           $newdefresponder =~ s/\D//g;
           if ($newdefresponder eq '' || $newdefresponder < 1) {
               $newdefresponder = 1;
           }
           $defaultshash{'coursedefaults'}{'anonsurvey_threshold'} = $newdefresponder;
           if ($currdefresponder ne $newdefresponder) {
               unless ($currdefresponder eq '' && $newdefresponder == 10) {
                   $changes{'anonsurvey_threshold'} = 1;
               }
           }
     }      }
     my $putresult = &Apache::lonnet::put_dom('configuration',\%defaultshash,      my $putresult = &Apache::lonnet::put_dom('configuration',\%defaultshash,
                                              $dom);                                               $dom);
Line 6624  sub modify_coursedefaults { Line 6730  sub modify_coursedefaults {
                     } else {                      } else {
                         $resulttext .= '<li>'.&mt('Course/Community users can create/upload PDF forms set to "off"').'</li>';                          $resulttext .= '<li>'.&mt('Course/Community users can create/upload PDF forms set to "off"').'</li>';
                     }                      }
                   } elsif ($item eq 'anonsurvey_threshold') {
                           $resulttext .= '<li>'.&mt('Responder count required for display of anonymous survey submissions set to [_1].',$defaultshash{'coursedefaults'}{'anonsurvey_threshold'}).'</li>';
                 }                  }
             }              }
             $resulttext .= '</ul>';              $resulttext .= '</ul>';
Line 6642  sub modify_usersessions { Line 6750  sub modify_usersessions {
     my @types = ('version','excludedomain','includedomain');      my @types = ('version','excludedomain','includedomain');
     my @prefixes = ('remote','hosted');      my @prefixes = ('remote','hosted');
     my @lcversions = &Apache::lonnet::all_loncaparevs();      my @lcversions = &Apache::lonnet::all_loncaparevs();
       my (%by_ip,%by_location,@intdoms);
       &build_location_hashes(\@intdoms,\%by_ip,\%by_location);
       my @locations = sort(keys(%by_location));
     my (%defaultshash,%changes);      my (%defaultshash,%changes);
     foreach my $prefix (@prefixes) {      foreach my $prefix (@prefixes) {
         $defaultshash{'usersessions'}{$prefix} = {};          $defaultshash{'usersessions'}{$prefix} = {};
     }      }
     my %domdefaults = &Apache::lonnet::get_domain_defaults($dom);      my %domdefaults = &Apache::lonnet::get_domain_defaults($dom);
     my $resulttext;      my $resulttext;
       my %iphost = &Apache::lonnet::get_iphost();
     foreach my $prefix (@prefixes) {      foreach my $prefix (@prefixes) {
         foreach my $type (@types) {          foreach my $type (@types) {
             my $inuse = $env{'form.'.$prefix.'_'.$type.'_inuse'};              my $inuse = $env{'form.'.$prefix.'_'.$type.'_inuse'};
Line 6694  sub modify_usersessions { Line 6806  sub modify_usersessions {
                 my @vals = &Apache::loncommon::get_env_multiple('form.'.$prefix.'_'.$type);                  my @vals = &Apache::loncommon::get_env_multiple('form.'.$prefix.'_'.$type);
                 my @okvals;                  my @okvals;
                 foreach my $val (@vals) {                  foreach my $val (@vals) {
                     if (&Apache::lonnet::domain($val) ne '') {                      if ($val =~ /:/) {
                         push(@okvals,$val);                          my @items = split(/:/,$val);
                           foreach my $item (@items) {
                               if (ref($by_location{$item}) eq 'ARRAY') {
                                   push(@okvals,$item);
                               }
                           }
                       } else {
                           if (ref($by_location{$val}) eq 'ARRAY') {
                               push(@okvals,$val);
                           }
                     }                      }
                 }                  }
                 @okvals = sort(@okvals);                  @okvals = sort(@okvals);
Line 6942  sub usersession_titles { Line 7063  sub usersession_titles {
   
                remote => 'Hosting of sessions for users in this domain on servers in other domains',                 remote => 'Hosting of sessions for users in this domain on servers in other domains',
                version => 'LON-CAPA version requirement',                 version => 'LON-CAPA version requirement',
                excludedomain => 'Specific domains excluded',                 excludedomain => 'Allow all, but exclude specific domains',
                includedomain => 'Specific domains included',                 includedomain => 'Deny all, but include specific domains',
            );             );
 }  }
   

Removed from v.1.137  
changed lines
  Added in v.1.140


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