--- loncom/interface/domainprefs.pm 2014/05/09 15:02:31 1.242 +++ loncom/interface/domainprefs.pm 2014/07/15 20:04:03 1.248 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set domain-wide configuration settings # -# $Id: domainprefs.pm,v 1.242 2014/05/09 15:02:31 raeburn Exp $ +# $Id: domainprefs.pm,v 1.248 2014/07/15 20:04:03 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -762,8 +762,9 @@ sub print_config_box { $output .= &print_login('help',$dom,$confname,$phase,$settings,\$rowtotal); } } elsif ($action eq 'requestcourses') { - $output .= &print_requestmail($dom,$action,$settings,\$rowtotal). - &print_studentcode($settings,\$rowtotal).' + $output .= &print_requestmail($dom,$action,$settings,\$rowtotal); + $rowtotal ++; + $output .= &print_studentcode($settings,\$rowtotal).' @@ -798,6 +799,7 @@ sub print_config_box { &print_validation_rows('requestcourses',$dom,$settings,\$rowtotal); } elsif ($action eq 'requestauthor') { $output .= &print_requestmail($dom,$action,$settings,\$rowtotal); + $rowtotal ++; } elsif ($action eq 'rolecolors') { $output .= &print_rolecolors($phase,'coordinator',$dom,$confname,$settings,\$rowtotal).' @@ -2074,7 +2076,6 @@ sub print_requestmail { $datatable .= &mt('There are no active Domain Coordinators'); } $datatable .=''; - $$rowtotal += $rows; return $datatable; } @@ -2083,9 +2084,11 @@ sub print_studentcode { my $rownum = 0; my ($output,%current); my @crstypes = ('official','unofficial','community','textbook'); - if (ref($settings->{'uniquecode'}) eq 'HASH') { - foreach my $type (@crstypes) { - $current{$type} = $settings->{'uniquecode'}{$type}; + if (ref($settings) eq 'HASH') { + if (ref($settings->{'uniquecode'}) eq 'HASH') { + foreach my $type (@crstypes) { + $current{$type} = $settings->{'uniquecode'}{$type}; + } } } $output .= ''. @@ -2135,11 +2138,12 @@ sub print_textbookcourses { my $key = $ordered{$items[$i]}; my %coursehash=&Apache::lonnet::coursedescription($key); my $coursetitle = $coursehash{'description'}; - my ($subject,$title,$author,$image,$imgsrc,$cdom,$cnum); + my ($subject,$title,$author,$publisher,$image,$imgsrc,$cdom,$cnum); if (ref($bookshash->{$key}) eq 'HASH') { $subject = $bookshash->{$key}->{'subject'}; $title = $bookshash->{$key}->{'title'}; if ($type eq 'textbooks') { + $publisher = $bookshash->{$key}->{'publisher'}; $author = $bookshash->{$key}->{'author'}; $image = $bookshash->{$key}->{'image'}; if ($image ne '') { @@ -2169,6 +2173,8 @@ sub print_textbookcourses { ''.&mt('Title:').' '; if ($type eq 'textbooks') { $datatable .= (' 'x2). + ''.&mt('Publisher:').' '. + (' 'x2). ''.&mt('Author(s):').' '. (' 'x2). ''.&mt('Thumbnail:'); @@ -2212,7 +2218,9 @@ sub print_textbookcourses { ''.&mt('Title:').' '."\n". (' 'x2); if ($type eq 'textbooks') { - $datatable .= ''.&mt('Author(s):').' '."\n". + $datatable .= ''.&mt('Publisher:').' '."\n". + (' 'x2). + ''.&mt('Author(s):').' '."\n". (' 'x2). ''.&mt('Image:').' '; if ($switchserver) { @@ -2514,13 +2522,15 @@ sub print_autocreate { $createoff{'req'}.' value="0" />'.&mt('No').''; my ($numdc,$dctable,$rows) = &active_dc_picker($dom,$numinrow,'radio', 'autocreate_xmldc',%currhash); + $datatable .= ''; if ($numdc > 1) { - $datatable .= ''. - &mt('Course creation processed as: (choose Dom. Coord.)'). - ''.$dctable.''; + $datatable .= &mt('Course creation processed as: (choose Dom. Coord.)'). + ''; } else { - $datatable .= $dctable.''; + $datatable .= &mt('Course creation processed as:'). + ''; } + $datatable .= $dctable.''; $$rowtotal += $rows; return $datatable; } @@ -3112,21 +3122,24 @@ sub print_validation_rows { } if ($caller eq 'requestcourses') { my %currhash; - if (ref($settings->{'validation'}) eq 'HASH') { - if ($settings->{'validation'}{'dc'} ne '') { - $currhash{$settings->{'validation'}{'dc'}} = 1; + if (ref($settings) eq 'HASH') { + if (ref($settings->{'validation'}) eq 'HASH') { + if ($settings->{'validation'}{'dc'} ne '') { + $currhash{$settings->{'validation'}{'dc'}} = 1; + } } } my $numinrow = 2; my ($numdc,$dctable,$rows) = &active_dc_picker($dom,$numinrow,'radio', 'validationdc',%currhash); + my $css_class = $itemcount%2 ? ' class="LC_odd_row"' : ''; + $datatable .= ''; if ($numdc > 1) { - $datatable .= ''. - &mt('Course creation processed as: (choose Dom. Coord.)'). - ''.$dctable.''; + $datatable .= &mt('Course creation processed as: (choose Dom. Coord.)'); } else { - $datatable .= $dctable.''; + $datatable .= &mt('Course creation processed as: '); } + $datatable .= ''.$dctable.''; $itemcount ++; } if (ref($rowtotal)) { @@ -4152,8 +4165,10 @@ sub print_selfcreation { $datatable .= ''; } my $currval; - if (ref($createsettings->{'shibenv'}) eq 'HASH') { - $currval = $createsettings->{'shibenv'}{$fields[$i]}; + if (ref($createsettings) eq 'HASH') { + if (ref($createsettings->{'shibenv'}) eq 'HASH') { + $currval = $createsettings->{'shibenv'}{$fields[$i]}; + } } $datatable .= ''. ''. @@ -5157,7 +5172,8 @@ sub serverstatus_pages { sub defaults_javascript { my ($settings) = @_; - my ($output,$jstext); + my ($output,$jstext); + return unless (ref($settings) eq 'HASH'); if ((ref($settings->{'inststatusorder'}) eq 'ARRAY') && (ref($settings->{'inststatustypes'}) eq 'HASH')) { my $maxnum = scalar(@{$settings->{'inststatusorder'}}); if ($maxnum eq '') { @@ -6968,8 +6984,9 @@ sub modify_quotas { } else { my $newpos = $env{'form.'.$itemid}; $newpos =~ s/\D+//g; - foreach my $item ('subject','title','author') { - next if (($item eq 'author') && ($type eq 'templates')); + foreach my $item ('subject','title','publisher','author') { + next if ((($item eq 'author') || ($item eq 'publisher')) && + ($type eq 'templates')); $confhash{$type}{$key}{$item} = $env{'form.'.$type.'_'.$item.'_'.$i}; if ($domconfig{$action}{$type}{$key}{$item} ne $confhash{$type}{$key}{$item}) { $changes{$type}{$key} = 1; @@ -7014,8 +7031,9 @@ sub modify_quotas { foreach my $type ('textbooks','templates') { if ($newbook{$type}) { $changes{$type}{$newbook{$type}} = 1; - foreach my $item ('subject','title','author') { - next if (($item eq 'author') && ($type eq 'template')); + foreach my $item ('subject','title','publisher','author') { + next if ((($item eq 'author') || ($item eq 'publisher')) && + ($type eq 'template')); $env{'form.'.$type.'_addbook_'.$item} =~ s/(`)/'/g; if ($env{'form.'.$type.'_addbook_'.$item}) { $confhash{$type}{$newbook{$type}}{$item} = $env{'form.'.$type.'_addbook_'.$item}; @@ -7429,8 +7447,9 @@ sub modify_quotas { my $coursetitle = $coursehash{'description'}; my $position = $confhash{$type}{$key}{'order'} + 1; $resulttext .= '
  • '; - foreach my $item ('subject','title','author') { - next if (($item eq 'author') && ($type eq 'templates')); + foreach my $item ('subject','title','publisher','author') { + next if ((($item eq 'author') || ($item eq 'publisher')) && + ($type eq 'templates')); my $name = $item.':'; $name =~ s/^(\w)/\U$1/; $resulttext .= &mt($name).' '.$confhash{$type}{$key}{$item}.'
    '; @@ -8522,7 +8541,7 @@ sub modify_selfcreation { # value set to one), if self-creation with e-mail address permitted, where $type is user type: faculty, staff, student etc. # - if ($env{'form.cancreate_email'} eq 'email') { + if ($env{'form.cancreate_email'}) { push(@contexts,'emailusername'); if (ref($types) eq 'ARRAY') { foreach my $type (@{$types}) { @@ -8940,17 +8959,19 @@ sub modify_selfcreation { foreach my $type (@{$types}) { if (ref($cancreate{'emailusername'}{$type}) eq 'HASH') { if (keys(%{$cancreate{'emailusername'}{$type}}) > 0) { - $chgtext .= &mt('When self-creating account with e-mail as username, the following information will be provided by [_1]:',$usertypes->{$type}). + $chgtext .= &mt('When self-creating account with e-mail as username, the following information will be provided by [_1]:',"'$usertypes->{$type}'"). '
      '; foreach my $field (@{$infofields}) { if ($cancreate{'emailusername'}{$type}{$field}) { $chgtext .= '
    • '.$infotitles->{$field}.'
    • '; } } + $chgtext .= '
    '; + } else { + $chgtext .= &mt('When self creating account with e-mail as username, no information besides e-mail address will be provided by [_1].',"'$usertypes->{$type}'").'
    '; } - $chgtext .= ''; } else { - $chgtext .= &mt('When self creating account with e-mail as username, no information besides e-mail address will be provided by [_1].',$usertypes->{$type}).'
    '; + $chgtext .= &mt('When self creating account with e-mail as username, no information besides e-mail address will be provided by [_1].',"'$usertypes->{$type}'").'
    '; } } } @@ -9757,9 +9778,17 @@ sub modify_coursecategories { } $resulttext .= ''; if ($changes{'unauth'} || $changes{'auth'}) { - &Apache::loncommon::devalidate_domconfig_cache($dom); + my %domdefaults = &Apache::lonnet::get_domain_defaults($dom); + if ($changes{'auth'}) { + $domdefaults{'catauth'} = $domconfig{'coursecategories'}{'auth'}; + } + if ($changes{'unauth'}) { + $domdefaults{'catunauth'} = $domconfig{'coursecategories'}{'unauth'}; + } + my $cachetime = 24*60*60; + &Apache::lonnet::do_cache_new('domdefaults',$dom,\%domdefaults,$cachetime); if (ref($lastactref) eq 'HASH') { - $lastactref->{'domainconfig'} = 1; + $lastactref->{'domdefaults'} = 1; } } } else { @@ -10967,7 +10996,7 @@ sub active_dc_picker { my ($dcname,$dcdom) = split(':',$domcoord[0]); my $user = &Apache::loncommon::plainname($dcname,$dcdom); if ($inputtype eq 'radio') { - $table .= ''.$user; + $table = ''.$user; if ($user ne $dcname.':'.$dcdom) { $table .= ' ('.$dcname.':'.$dcdom.')'; } @@ -10976,9 +11005,9 @@ sub active_dc_picker { if (exists($currhash{$domcoord[0]})) { $check = ' checked="checked"'; } - $table .= '