--- loncom/interface/domainprefs.pm 2007/04/10 20:49:07 1.9
+++ loncom/interface/domainprefs.pm 2007/06/04 14:14:27 1.20
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set domain-wide configuration settings
#
-# $Id: domainprefs.pm,v 1.9 2007/04/10 20:49:07 raeburn Exp $
+# $Id: domainprefs.pm,v 1.20 2007/06/04 14:14:27 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;
}
@@ -522,13 +522,14 @@ sub display_color_options {
'';
my $switchserver = &check_switchserver($dom,$confname);
foreach my $img (@{$images}) {
- $itemcount ++;
+ $itemcount ++;
$css_class = $itemcount%2?' class="LC_odd_row"':'';
$datatable .= '
'.
''.&mt('Notification messages - sender').
' | '.
@@ -836,10 +853,11 @@ sub print_autoupdate {
if (keys(%{$usertypes}) > 0) {
$othertitle = &mt('Other users');
}
- my @fields = ('lastname','firstname','middlename','gen','email','id');
+ my @fields = ('lastname','firstname','middlename','gen',
+ 'permanentemail','id');
my %fieldtitles = &Apache::lonlocal::texthash (
id => 'Student/Employee ID',
- email => 'E-mail address',
+ permanentemail => 'E-mail address',
lastname => 'Last Name',
firstname => 'First Name',
middlename => 'Middle Name',
@@ -951,7 +969,8 @@ sub modify_login {
$resulttext = &mt('No changes made to log-in page settings');
}
} else {
- $resulttext = &mt('An error occurred: [_1]',$putresult);
+ $resulttext = ''.
+ &mt('An error occurred: [_1]',$putresult).'';
}
if ($errors) {
$resulttext .= ' '.&mt('The following errors occurred: ').''.
@@ -993,7 +1012,8 @@ sub modify_rolecolors {
$resulttext = &mt('No changes made to default color schemes');
}
} else {
- $resulttext = &mt('An error occurred: [_1]',$putresult);
+ $resulttext = ''.
+ &mt('An error occurred: [_1]',$putresult).'';
}
if ($errors) {
$resulttext .= &mt('The following errors occurred: ').''.
@@ -1004,7 +1024,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;
@@ -1012,6 +1032,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');
@@ -1032,11 +1057,20 @@ sub modify_colors {
}
my ($width,$height) = &thumb_dimensions();
foreach my $img (@images) {
+ if ( ! $env{'form.'.$role.'_'.$img.'.filename'}
+ && !defined($domconfig->{$role}{$img})
+ && !$env{'form.'.$role.'_del_'.$img}
+ && $env{'form.'.$role.'_import_'.$img}) {
+ # import the old configured image from the .tab setting
+ # if they haven't provided a new one
+ $domconfig->{$role}{$img} =
+ $env{'form.'.$role.'_import_'.$img};
+ }
if ($env{'form.'.$role.'_'.$img.'.filename'} ne '') {
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) =
@@ -1044,20 +1078,20 @@ 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 publshing 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);
- $errors .= '- '.$error.'
';
+ $errors .= '- '.$error.'
';
}
} elsif ($domconfig->{$role}{$img} ne '') {
if ($domconfig->{$role}{$img} !~ m-^(/res/\Q$dom\E/\Q$confname\E/\Q$img\E)/([^/]+)$-) {
@@ -1071,6 +1105,7 @@ sub modify_colors {
$dom,$confname,$img,$width,$height);
if ($result eq 'ok') {
$confhash->{$role}{$img} = $logourl;
+ $changes{$role}{'images'}{$img} = 1;
}
}
}
@@ -1084,7 +1119,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};
@@ -1093,7 +1128,7 @@ sub modify_colors {
} else {
if ($env{'form.'.$role.'_del_'.$img}) {
$confhash->{$role}{$img} = '';
- $changes{$role}{$img} = 1;
+ $changes{$role}{'images'}{$img} = 1;
}
}
}
@@ -1155,7 +1190,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'}) {
@@ -1192,7 +1227,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 = '';
+ }
+ $resulttext .= '- '.&mt("$choices{$item} set to [_1]",$newitem).'
';
}
}
if ($role ne 'login') {
@@ -1218,6 +1257,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);
@@ -1350,17 +1409,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";
+ }
+ }
}
}
}
@@ -1454,10 +1519,9 @@ sub check_switchserver {
$home = &Apache::lonnet::domain($dom,'primary');
}
my @ids=&Apache::lonnet::current_machine_ids();
- foreach my $id (@ids) { if ($id eq $home) { $allowed=1; }
- if (!$allowed) {
- $switchserver=''.&mt('Switch Server').'';
- }
+ foreach my $id (@ids) { if ($id eq $home) { $allowed=1; } }
+ if (!$allowed) {
+ $switchserver=''.&mt('Switch Server').'';
}
return $switchserver;
}
@@ -1473,6 +1537,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})) {
@@ -1507,7 +1572,8 @@ sub modify_quotas {
$resulttext = &mt('No changes made to default quotas');
}
} else {
- $resulttext = &mt('An error occurred: [_1]',$putresult);
+ $resulttext = ''.
+ &mt('An error occurred: [_1]',$putresult).'';
}
return $resulttext;
}
@@ -1525,10 +1591,17 @@ sub modify_autoenroll {
my %title = ( run => 'Auto-enrollment active',
sender => 'Sender for notification messages');
my @offon = ('off','on');
+ my $sender_uname = $env{'form.sender_uname'};
+ my $sender_domain = $env{'form.sender_domain'};
+ if ($sender_domain eq '') {
+ $sender_uname = '';
+ } elsif ($sender_uname eq '') {
+ $sender_domain = '';
+ }
my %autoenrollhash = (
autoenroll => { run => $env{'form.autoenroll_run'},
- sender_uname => $env{'form.sender_uname'},
- sender_domain => $env{'form.sender_domain'},
+ sender_uname => $sender_uname,
+ sender_domain => $sender_domain,
}
);
@@ -1544,18 +1617,10 @@ sub modify_autoenroll {
$changes{'run'} = 1;
}
}
- if (exists($currautoenroll{sender_uname})) {
- if ($currautoenroll{'sender_uname'} ne $env{'form.sender_uname'}) {
- $changes{'sender'} = 1;
- }
- } else {
+ if ($currautoenroll{'sender_uname'} ne $sender_uname) {
$changes{'sender'} = 1;
}
- if (exists($currautoenroll{sender_domain})) {
- if ($currautoenroll{'sender_domain'} ne $env{'form.sender_domain'}) {
- $changes{'sender'} = 1;
- }
- } else {
+ if ($currautoenroll{'sender_domain'} ne $sender_domain) {
$changes{'sender'} = 1;
}
if (keys(%changes) > 0) {
@@ -1564,14 +1629,19 @@ sub modify_autoenroll {
$resulttext .= '- '.&mt("$title{'run'} set to $offon[$env{'form.autoenroll_run'}]").'
';
}
if ($changes{'sender'}) {
- $resulttext .= '- '.&mt("$title{'sender'} set to [_1]",$env{'form.sender_uname'}.':'.$env{'form.sender_domain'}).'
';
+ if ($sender_uname eq '' || $sender_domain eq '') {
+ $resulttext .= '- '.&mt("$title{'sender'} set to default (course owner).").'
';
+ } else {
+ $resulttext .= '- '.&mt("$title{'sender'} set to [_1]",$sender_uname.':'.$sender_domain).'
';
+ }
}
$resulttext .= ' ';
} else {
$resulttext = &mt('No changes made to auto-enrollment settings');
}
} else {
- $resulttext = &mt('An error occurred: [_1]',$putresult);
+ $resulttext = ''.
+ &mt('An error occurred: [_1]',$putresult).'';
}
return $resulttext;
}
@@ -1592,7 +1662,7 @@ sub modify_autoupdate {
my ($usertypes,$order) = &Apache::lonnet::retrieve_inst_usertypes($dom);
my %fieldtitles = &Apache::lonlocal::texthash (
id => 'Student/Employee ID',
- email => 'E-mail address',
+ permanentemail => 'E-mail address',
lastname => 'Last Name',
firstname => 'First Name',
middlename => 'Middle Name',
@@ -1690,7 +1760,8 @@ sub modify_autoupdate {
$resulttext = &mt('No changes made to autoupdates');
}
} else {
- $resulttext = &mt('An error occurred: [_1]',$putresult);
+ $resulttext = ''.
+ &mt('An error occurred: [_1]',$putresult).'';
}
return $resulttext;
}
|