--- loncom/interface/domainprefs.pm 2007/04/12 20:33:31 1.11 +++ loncom/interface/domainprefs.pm 2007/05/27 21:21:26 1.16 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set domain-wide configuration settings # -# $Id: domainprefs.pm,v 1.11 2007/04/12 20:33:31 albertel Exp $ +# $Id: domainprefs.pm,v 1.16 2007/05/27 21:21:26 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -145,7 +145,7 @@ sub handler { '); - &print_footer($r,$phase,'process','Store changes'); + &print_footer($r,$phase,'process','Save changes'); } return OK; } @@ -550,6 +550,7 @@ sub display_color_options { $showfile = ''; } } elsif ($imgfile =~ m-^/(adm/[^/]+)/([^/]+)$-) { + $showfile = $imgfile; my $imgdir = $1; my $filename = $2; if (-e "/home/httpd/html/$imgdir/tn-".$filename) { @@ -559,12 +560,17 @@ sub display_color_options { my $output = '/home/httpd/html/'.$imgdir.'/tn-'.$filename; if (!-e $output) { my ($width,$height) = &thumb_dimensions(); - my $size = $width.'x'.$height; - system("convert -sample $size $input $output"); + my ($fullwidth,$fullheight) = &check_dimensions($input); + if ($fullwidth ne '' && $fullheight ne '') { + if ($fullwidth > $width && $fullheight > $height) { + my $size = $width.'x'.$height; + system("convert -sample $size $input $output"); + $showfile = '/'.$imgdir.'/tn-'.$filename; + } + } } - $showfile = '/'.$imgdir.'/tn-'.$filename; } - } + } if ($showfile) { $showfile = &Apache::loncommon::lonhttpdurl($showfile); $fullsize = &Apache::loncommon::lonhttpdurl($imgfile); @@ -733,7 +739,7 @@ sub print_quotas { $datatable .= ''. ''.&mt($othertitle).''. ''. - ' Mb'; return $datatable; } @@ -764,6 +770,14 @@ sub print_autoenroll { if (exists($settings->{'sender_domain'})) { $defdom = $settings->{'sender_domain'}; } + } else { + if ($autorun) { + $runon = ' checked="checked" '; + $runoff = ' '; + } else { + $runoff = ' checked="checked" '; + $runon = ' '; + } } my $domform = &Apache::loncommon::select_dom_form($defdom,'sender_domain',1); my $datatable=''. @@ -772,7 +786,7 @@ sub print_autoenroll { ''.&mt('Yes').' '. ''. + $runoff.' value="0" />'.&mt('No').''. ''. ''.&mt('Notification messages - sender'). ''. @@ -1006,7 +1020,7 @@ sub modify_rolecolors { sub modify_colors { my ($r,$dom,$confname,$roles,$domconfig,$confhash) = @_; - my %changes; + my (%changes,%choices); my @bgs = ('pgbg','mainbg','sidebg'); my @links = ('link','alink','vlink'); my @images; @@ -1014,6 +1028,11 @@ sub modify_colors { my $errors; foreach my $role (@{$roles}) { if ($role eq 'login') { + %choices = &login_choices(); + } else { + %choices = &color_font_choices(); + } + if ($role eq 'login') { @images = ('img','logo','domlogo'); } else { @images = ('img'); @@ -1038,7 +1057,7 @@ sub modify_colors { my $error; if ($configuserok eq 'ok') { if ($switchserver) { - $error = &mt("Upload of image [_1] for $role page(s) is not permitted to this server: [_2]",$img,$switchserver); + $error = &mt("Upload of [_1] image for $role page(s) is not permitted to this server: [_2]",$choices{$img},$switchserver); } else { if ($author_ok eq 'ok') { my ($result,$logourl) = @@ -1046,16 +1065,16 @@ sub modify_colors { $dom,$confname,$img,$width,$height); if ($result eq 'ok') { $confhash->{$role}{$img} = $logourl; - $changes{$role}{$img} = 1; + $changes{$role}{'images'}{$img} = 1; } else { - $error = &mt("Upload of image [_1] for $role page(s) failed because an error occurred publishing the file in RES space. Error was: [_2].",$img,$result); + $error = &mt("Upload of [_1] image for $role page(s) failed because an error occurred publishing the file in RES space. Error was: [_2].",$choices{img},$result); } } else { - $error = &mt("Upload of image [_1] for $role page(s) failed because an author role could not be assigned to a Domain Configuation user ([_2]) in domain: [_3]. Error was: [_4].",$img,$confname,$dom,$author_ok); + $error = &mt("Upload of [_1] image for $role page(s) failed because an author role could not be assigned to a Domain Configuation user ([_2]) in domain: [_3]. Error was: [_4].",$choices{$img},$confname,$dom,$author_ok); } } } else { - $error = &mt("Upload of image [_1] for $role page(s) failed because a Domain Configuation user ([_2]) could not be created in domain: [_3]. Error was: [_4].",$img,$confname,$dom,$configuserok); + $error = &mt("Upload of [_1] image for $role page(s) failed because a Domain Configuation user ([_2]) could not be created in domain: [_3]. Error was: [_4].",$choices{$img},$confname,$dom,$configuserok); } if ($error) { &Apache::lonnet::logthis($error); @@ -1086,7 +1105,7 @@ sub modify_colors { if ($domconfig->{$role}{$img} ne '') { if ($env{'form.'.$role.'_del_'.$img}) { $confhash->{$role}{$img} = ''; - $changes{$role}{$img} = 1; + $changes{$role}{'images'}{$img} = 1; } else { if ($confhash->{$role}{$img} eq '') { $confhash->{$role}{$img} = $domconfig->{$role}{$img}; @@ -1095,7 +1114,7 @@ sub modify_colors { } else { if ($env{'form.'.$role.'_del_'.$img}) { $confhash->{$role}{$img} = ''; - $changes{$role}{$img} = 1; + $changes{$role}{'images'}{$img} = 1; } } } @@ -1157,7 +1176,7 @@ sub default_change_checker { foreach my $img (@{$images}) { if ($env{'form.'.$role.'_del_'.$img}) { $confhash->{$role}{$img} = ''; - $changes->{$role}{$img} = 1; + $changes->{$role}{'images'}{$img} = 1; } } if ($confhash->{$role}{'font'}) { @@ -1194,7 +1213,11 @@ sub display_colorchgs { if ($confhash->{$role}{$item} eq '') { $resulttext .= '
  • '.&mt("$choices{$item} set to default").'
  • '; } else { - $resulttext .= '
  • '.&mt("$choices{$item} set to [_1]",$confhash->{$role}{$item}).'
  • '; + my $newitem = $confhash->{$role}{$item}; + if ($key eq 'images') { + $newitem = ''.$choices{$item}.''; + } + $resulttext .= '
  • '.&mt("$choices{$item} set to [_1]",$newitem).'
  • '; } } if ($role ne 'login') { @@ -1220,6 +1243,26 @@ sub thumb_dimensions { return ('200','50'); } +sub check_dimensions { + my ($inputfile) = @_; + my ($fullwidth,$fullheight); + if ($inputfile =~ m|^[/\w.\-]+$|) { + if (open(PIPE,"identify $inputfile 2>&1 |")) { + my $imageinfo = ; + if (!close(PIPE)) { + &Apache::lonnet::logthis("Failed to close PIPE opened to retrieve image information for $inputfile"); + } + chomp($imageinfo); + my ($fullsize) = + ($imageinfo =~ /^\Q$inputfile\E\s+\w+\s+(\d+x\d+)\s+/); + if ($fullsize) { + ($fullwidth,$fullheight) = split(/x/,$fullsize); + } + } + } + return ($fullwidth,$fullheight); +} + sub check_configuser { my ($uhome,$dom,$confname,$servadm) = @_; my ($configuserok,%currroles); @@ -1352,17 +1395,23 @@ $env{'user.name'}.':'.$env{'user.domain' if (($thumbwidth =~ /^\d+$/) && ($thumbheight =~ /^\d+$/)) { my $inputfile = $filepath.'/'.$file; my $outfile = $filepath.'/'.'tn-'.$file; - my $thumbsize = $thumbwidth.'x'.$thumbheight; - system("convert -sample $thumbsize $inputfile $outfile"); - chmod(0660, $filepath.'/tn-'.$file); - if (-e $outfile) { - my $copyfile=$targetdir.'/tn-'.$file; - if (copy($outfile,$copyfile)) { - print $logfile "\nCopied source to ".$copyfile."\n"; - &write_metadata($dom,$confname,$formname,$targetdir, - 'tn-'.$file,$logfile); - } else { - print $logfile "\nUnable to write ".$copyfile.':'.$!."\n"; + my ($fullwidth,$fullheight) = &check_dimensions($inputfile); + if ($fullwidth ne '' && $fullheight ne '') { + if ($fullwidth > $thumbwidth && $fullheight > $thumbheight) { + my $thumbsize = $thumbwidth.'x'.$thumbheight; + system("convert -sample $thumbsize $inputfile $outfile"); + chmod(0660, $filepath.'/tn-'.$file); + if (-e $outfile) { + my $copyfile=$targetdir.'/tn-'.$file; + if (copy($outfile,$copyfile)) { + print $logfile "\nCopied source to ".$copyfile."\n"; + &write_metadata($dom,$confname,$formname, + $targetdir,'tn-'.$file,$logfile); + } else { + print $logfile "\nUnable to write ".$copyfile. + ':'.$!."\n"; + } + } } } } @@ -1474,6 +1523,7 @@ sub modify_quotas { $formhash{$1} = $env{$key}; } } + $formhash{'default'} = $env{'form.defaultquota'}; if (ref($domconfig{'quotas'}) eq 'HASH') { foreach my $key (keys(%{$domconfig{'quotas'}})) { if (exists($formhash{$key})) {