--- loncom/interface/domainprefs.pm 2011/08/15 05:16:30 1.153
+++ loncom/interface/domainprefs.pm 2012/08/21 21:12:08 1.164
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set domain-wide configuration settings
#
-# $Id: domainprefs.pm,v 1.153 2011/08/15 05:16:30 raeburn Exp $
+# $Id: domainprefs.pm,v 1.164 2012/08/21 21:12:08 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -86,8 +86,8 @@ $dom,$settings,$rowtotal,$action.
$dom is the domain, $settings is a reference to a hash of current settings for
the current context, $rowtotal is a reference to the scalar used to record the
-number of rows displayed on the page, and $action is the context (either quotas
-or requestcourses).
+number of rows displayed on the page, and $action is the context (quotas,
+requestcourses or requestauthor).
The print_quotas routine was orginally created to display/store information
about default quota sizes for portfolio spaces for the different types of
@@ -171,6 +171,9 @@ use Locale::Language;
use DateTime::TimeZone;
use DateTime::Locale;
+my $registered_cleanup;
+my $modified_urls;
+
sub handler {
my $r=shift;
if ($r->header_only) {
@@ -190,6 +193,10 @@ sub handler {
"/adm/domainprefs:mau:0:0:Cannot modify domain settings";
return HTTP_NOT_ACCEPTABLE;
}
+
+ $registered_cleanup=0;
+ @{$modified_urls}=();
+
&Apache::lonhtmlcommon::clear_breadcrumbs();
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
['phase','actions']);
@@ -204,11 +211,13 @@ sub handler {
'directorysrch','usercreation','usermodification',
'contacts','defaults','scantron','coursecategories',
'serverstatuses','requestcourses','helpsettings',
- 'coursedefaults','usersessions','loadbalancing'],$dom);
+ 'coursedefaults','usersessions','loadbalancing',
+ 'requestauthor'],$dom);
my @prefs_order = ('rolecolors','login','defaults','quotas','autoenroll',
'autoupdate','autocreate','directorysrch','contacts',
'usercreation','usermodification','scantron',
- 'requestcourses','coursecategories','serverstatuses','helpsettings',
+ 'requestcourses','requestauthor','coursecategories',
+ 'serverstatuses','helpsettings',
'coursedefaults','usersessions');
if (keys(%servers) > 1) {
push(@prefs_order,'loadbalancing');
@@ -240,7 +249,7 @@ sub handler {
col2 => 'Value'}],
},
'quotas' =>
- { text => 'User blogs, personal information pages, portfolios',
+ { text => 'Blogs, personal web pages, webDAV, portfolios',
help => 'Domain_Configuration_Quotas',
header => [{col1 => 'User affiliation',
col2 => 'Available tools',
@@ -316,6 +325,14 @@ sub handler {
{col1 => 'Setting',
col2 => 'Value'}],
},
+ 'requestauthor' =>
+ {text => 'Request authoring space',
+ help => 'Domain_Configuration_Request_Author',
+ header => [{col1 => 'User affiliation',
+ col2 => 'Availability/Processing of requests',},
+ {col1 => 'Setting',
+ col2 => 'Value'}],
+ },
'coursecategories' =>
{ text => 'Cataloging of courses/communities',
help => 'Domain_Configuration_Cataloging_Courses',
@@ -480,6 +497,8 @@ sub process_changes {
$output = &modify_serverstatuses($dom,%domconfig);
} elsif ($action eq 'requestcourses') {
$output = &modify_quotas($dom,$action,%domconfig);
+ } elsif ($action eq 'requestauthor') {
+ $output = &modify_quotas($dom,$action,%domconfig);
} elsif ($action eq 'helpsettings') {
$output = &modify_helpsettings($r,$dom,$confname,%domconfig);
} elsif ($action eq 'coursedefaults') {
@@ -542,6 +561,8 @@ sub print_config_box {
$colspan = ' colspan="2"';
} elsif ($action eq 'requestcourses') {
$output .= &print_quotas($dom,$settings,\$rowtotal,$action);
+ } elsif ($action eq 'requestauthor') {
+ $output .= &print_quotas($dom,$settings,\$rowtotal,$action);
} elsif ($action eq 'helpsettings') {
$output .= &print_helpsettings('top',$dom,$confname,$settings,\$rowtotal);
} elsif ($action eq 'usersessions') {
@@ -608,7 +629,9 @@ sub print_config_box {
} elsif ($action eq 'login') {
$output .= &print_login('bottom',$dom,$confname,$phase,$settings,\$rowtotal);
} elsif ($action eq 'requestcourses') {
- $output .= &print_courserequestmail($dom,$settings,\$rowtotal);
+ $output .= &print_requestmail($dom,$action,$settings,\$rowtotal);
+ } elsif ($action eq 'requestauthor') {
+ $output .= &print_requestmail($dom,$action,$settings,\$rowtotal);
} elsif ($action eq 'helpsettings') {
$output .= &print_helpsettings('bottom',$dom,$confname,$settings,\$rowtotal);
} elsif ($action eq 'usersessions') {
@@ -1051,6 +1074,7 @@ sub print_rolecolors {
sub display_color_options {
my ($dom,$confname,$phase,$role,$itemcount,$choices,$is_custom,$defaults,$designs,
$images,$bgs,$links,$alt_text,$rowtotal,$logintext) = @_;
+ my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'};
my $css_class = $itemcount%2?' class="LC_odd_row"':'';
my $datatable = '
'.
''.$choices->{'font'}.' ';
@@ -1128,11 +1152,11 @@ sub display_color_options {
$showfile = $imgfile;
my $imgdir = $1;
my $filename = $2;
- if (-e "/home/httpd/html/$imgdir/tn-".$filename) {
+ if (-e "$londocroot/$imgdir/tn-".$filename) {
$showfile = "/$imgdir/tn-".$filename;
} else {
- my $input = "/home/httpd/html".$imgfile;
- my $output = '/home/httpd/html/'.$imgdir.'/tn-'.$filename;
+ my $input = $londocroot.$imgfile;
+ my $output = "$londocroot/$imgdir/tn-".$filename;
if (!-e $output) {
my ($width,$height) = &thumb_dimensions();
my ($fullwidth,$fullheight) = &check_dimensions($input);
@@ -1140,7 +1164,7 @@ sub display_color_options {
if ($fullwidth > $width && $fullheight > $height) {
my $size = $width.'x'.$height;
system("convert -sample $size $input $output");
- $showfile = '/'.$imgdir.'/tn-'.$filename;
+ $showfile = "/$imgdir/tn-".$filename;
}
}
}
@@ -1368,14 +1392,19 @@ sub print_quotas {
@options =('norequest','approval','validate','autolimit');
%validations = &Apache::lonnet::auto_courserequest_checks($dom);
%titles = &courserequest_titles();
+ } elsif ($context eq 'requestauthor') {
+ @usertools = ('author');
+ @options = ('norequest','approval','automatic');
+ %titles = &authorrequest_titles();
} else {
- @usertools = ('aboutme','blog','portfolio');
+ @usertools = ('aboutme','blog','webdav','portfolio');
%titles = &tool_titles();
}
if (ref($types) eq 'ARRAY') {
foreach my $type (@{$types}) {
my $currdefquota;
- unless ($context eq 'requestcourses') {
+ unless (($context eq 'requestcourses') ||
+ ($context eq 'requestauthor')) {
if (ref($settings) eq 'HASH') {
if (ref($settings->{defaultquota}) eq 'HASH') {
$currdefquota = $settings->{defaultquota}->{$type};
@@ -1445,6 +1474,28 @@ sub print_quotas {
$cell{$item} .= $titles{'unlimited'};
}
}
+ } elsif ($context eq 'requestauthor') {
+ my $curroption;
+ if (ref($settings) eq 'HASH') {
+ $curroption = $settings->{$type};
+ }
+ if (!$curroption) {
+ $curroption = 'norequest';
+ }
+ foreach my $option (@options) {
+ my $val = $option;
+ if ($option eq 'norequest') {
+ $val = 0;
+ }
+ my $checked = '';
+ if ($option eq $curroption) {
+ $checked = ' checked="checked"';
+ }
+ $datatable .= ''.
+ ' '.
+ $titles{$option}.' ';
+ }
} else {
my $checked = 'checked="checked" ';
if (ref($settings) eq 'HASH') {
@@ -1470,7 +1521,8 @@ sub print_quotas {
$datatable .= ' ';
}
$datatable .= '';
- unless ($context eq 'requestcourses') {
+ unless (($context eq 'requestcourses') ||
+ ($context eq 'requestauthor')) {
$datatable .=
''.
' '.
+ $titles{$option}.' ';
+ }
} else {
my $checked = 'checked="checked" ';
if (ref($settings) eq 'HASH') {
@@ -1576,7 +1652,7 @@ sub print_quotas {
$datatable .= '';
}
$datatable .= ' ';
- unless ($context eq 'requestcourses') {
+ unless (($context eq 'requestcourses') || ($context eq 'requestauthor')) {
$datatable .= ''.
' Mb ';
@@ -1654,6 +1730,33 @@ sub print_quotas {
$advcell{$item} .= $titles{'unlimited'};
}
}
+ } elsif ($context eq 'requestauthor') {
+ my $curroption;
+ if (ref($settings) eq 'HASH') {
+ $curroption = $settings->{'_LC_adv'};
+ }
+ my $checked = '';
+ if ($curroption eq '') {
+ $checked = ' checked="checked"';
+ }
+ $datatable .= ''.
+ ' '.
+ &mt('No override set').' ';
+ foreach my $option (@options) {
+ my $val = $option;
+ if ($option eq 'norequest') {
+ $val = 0;
+ }
+ my $checked = '';
+ if ($val eq $curroption) {
+ $checked = ' checked="checked"';
+ }
+ $datatable .= ''.
+ ' '.
+ $titles{$option}.' ';
+ }
} else {
my $checked = 'checked="checked" ';
if (ref($settings) eq 'HASH') {
@@ -1683,8 +1786,8 @@ sub print_quotas {
return $datatable;
}
-sub print_courserequestmail {
- my ($dom,$settings,$rowtotal) = @_;
+sub print_requestmail {
+ my ($dom,$action,$settings,$rowtotal) = @_;
my ($now,$datatable,%dompersonnel,@domcoord,@currapproval,$rows);
$now = time;
$rows = 0;
@@ -1715,9 +1818,14 @@ sub print_courserequestmail {
my $numinrow = 4;
my $numdc = @domcoord;
my $css_class = 'class="LC_odd_row"';
- $datatable = ''.
- ' '.&mt('Receive notification of course requests requiring approval.').
- ' '.
+ my $text;
+ if ($action eq 'requestcourses') {
+ $text = &mt('Receive notification of course requests requiring approval');
+ } else {
+ $text = &mt('Receive notification of authoring space requests requiring approval')
+ }
+ $datatable = ' '.
+ ' '.$text.' '.
' ';
if (@domcoord > 0) {
$datatable .= '';
@@ -2906,6 +3014,7 @@ sub loadbalance_rule_row {
} else {
push(@rulenames,'specific');
}
+ push(@rulenames,'none');
my $style = $targets_div_style;
if (($type eq '_LC_external') || ($type eq '_LC_internetdom')) {
$style = $homedom_div_style;
@@ -2962,6 +3071,7 @@ sub offloadtype_text {
'homeserver' => "Offloads to user's home server",
'externalbalancer' => "Offloads to Load Balancer in user's domain",
'specific' => 'Offloads to specific server',
+ 'none' => 'No offload',
);
return %ruletitles;
}
@@ -2993,8 +3103,9 @@ sub contact_titles {
sub tool_titles {
my %titles = &Apache::lonlocal::texthash (
- aboutme => 'Personal Information Page',
+ aboutme => 'Personal web page',
blog => 'Blog',
+ webdav => 'WebDAV',
portfolio => 'Portfolio',
official => 'Official courses (with institutional codes)',
unofficial => 'Unofficial courses',
@@ -3017,6 +3128,15 @@ sub courserequest_titles {
return %titles;
}
+sub authorrequest_titles {
+ my %titles = &Apache::lonlocal::texthash (
+ norequest => 'Not allowed',
+ approval => 'Approval by Dom. Coord.',
+ automatic => 'Automatic approval',
+ );
+ return %titles;
+}
+
sub courserequest_conditions {
my %conditions = &Apache::lonlocal::texthash (
approval => '(Processing of request subject to approval by Domain Coordinator).',
@@ -3859,7 +3979,7 @@ sub print_serverstatuses {
sub serverstatus_pages {
return ('userstatus','lonstatus','loncron','server-status','codeversions',
'clusterstatus','metadata_keywords','metadata_harvest',
- 'takeoffline','takeonline','showenv','toggledebug');
+ 'takeoffline','takeonline','showenv','toggledebug','ping','domconf');
}
sub coursecategories_javascript {
@@ -4927,15 +5047,17 @@ sub publishlogo {
# See if there is anything left
unless ($fname) { return ('error: no uploaded file'); }
$fname="$subdir/$fname";
- my $filepath='/home/'.$confname.'/public_html';
+ my $docroot=$r->dir_config('lonDocRoot');
+ my $filepath="$docroot/priv";
+ my $relpath = "$dom/$confname";
my ($fnamepath,$file,$fetchthumb);
$file=$fname;
if ($fname=~m|/|) {
($fnamepath,$file) = ($fname =~ m|^(.*)/([^/]+)$|);
}
- my @parts=split(/\//,$filepath.'/'.$fnamepath);
+ my @parts=split(/\//,"$filepath/$relpath/$fnamepath");
my $count;
- for ($count=4;$count<=$#parts;$count++) {
+ for ($count=5;$count<=$#parts;$count++) {
$filepath.="/$parts[$count]";
if ((-e $filepath)!=1) {
mkdir($filepath,02770);
@@ -4982,7 +5104,6 @@ $env{'user.name'}.':'.$env{'user.domain'
close(FH);
chmod(0660, $source); # Permissions to rw-rw---.
- my $docroot=$r->dir_config('lonDocRoot');
my $targetdir=$docroot.'/res/'.$dom.'/'.$confname .'/'.$fnamepath;
my $copyfile=$targetdir.'/'.$file;
@@ -5005,8 +5126,15 @@ $env{'user.name'}.':'.$env{'user.domain'
if (copy($source,$copyfile)) {
print $logfile "\nCopied original source to ".$copyfile."\n";
$output = 'ok';
- &write_metadata($dom,$confname,$formname,$targetdir,$file,$logfile);
$logourl = '/res/'.$dom.'/'.$confname.'/'.$fname;
+ push(@{$modified_urls},[$copyfile,$source]);
+ my $metaoutput =
+ &write_metadata($dom,$confname,$formname,$targetdir,$file,$logfile);
+ unless ($registered_cleanup) {
+ my $handlers = $r->get_handlers('PerlCleanupHandler');
+ $r->set_handlers('PerlCleanupHandler' => [\¬ifysubscribed,@{$handlers}]);
+ $registered_cleanup=1;
+ }
} else {
print $logfile "\nUnable to write ".$copyfile.':'.$!."\n";
$output = &mt('Failed to copy file to RES space').", $!";
@@ -5024,8 +5152,15 @@ $env{'user.name'}.':'.$env{'user.domain'
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);
+ my $thumb_metaoutput =
+ &write_metadata($dom,$confname,$formname,
+ $targetdir,'tn-'.$file,$logfile);
+ push(@{$modified_urls},[$copyfile,$outfile]);
+ unless ($registered_cleanup) {
+ my $handlers = $r->get_handlers('PerlCleanupHandler');
+ $r->set_handlers('PerlCleanupHandler' => [\¬ifysubscribed,@{$handlers}]);
+ $registered_cleanup=1;
+ }
} else {
print $logfile "\nUnable to write ".$copyfile.
':'.$!."\n";
@@ -5090,30 +5225,79 @@ sub write_metadata {
{
print $logfile "\nWrite metadata file for ".$targetdir.'/'.$file;
my $mfh;
- unless (open($mfh,'>'.$targetdir.'/'.$file.'.meta')) {
+ if (open($mfh,'>'.$targetdir.'/'.$file.'.meta')) {
+ foreach (sort keys %metadatafields) {
+ unless ($_=~/\./) {
+ my $unikey=$_;
+ $unikey=~/^([A-Za-z]+)/;
+ my $tag=$1;
+ $tag=~tr/A-Z/a-z/;
+ print $mfh "\n\<$tag";
+ foreach (split(/\,/,$metadatakeys{$unikey})) {
+ my $value=$metadatafields{$unikey.'.'.$_};
+ $value=~s/\"/\'\'/g;
+ print $mfh ' '.$_.'="'.$value.'"';
+ }
+ print $mfh '>'.
+ &HTML::Entities::encode($metadatafields{$unikey},'<>&"')
+ .''.$tag.'>';
+ }
+ }
+ $output = 'ok';
+ print $logfile "\nWrote metadata";
+ close($mfh);
+ } else {
+ print $logfile "\nFailed to open metadata file";
$output = &mt('Could not write metadata');
}
- foreach (sort keys %metadatafields) {
- unless ($_=~/\./) {
- my $unikey=$_;
- $unikey=~/^([A-Za-z]+)/;
- my $tag=$1;
- $tag=~tr/A-Z/a-z/;
- print $mfh "\n\<$tag";
- foreach (split(/\,/,$metadatakeys{$unikey})) {
- my $value=$metadatafields{$unikey.'.'.$_};
- $value=~s/\"/\'\'/g;
- print $mfh ' '.$_.'="'.$value.'"';
- }
- print $mfh '>'.
- &HTML::Entities::encode($metadatafields{$unikey},'<>&"')
- .''.$tag.'>';
- }
- }
- $output = 'ok';
- print $logfile "\nWrote metadata";
- close($mfh);
}
+ return $output;
+}
+
+sub notifysubscribed {
+ foreach my $targetsource (@{$modified_urls}){
+ next unless (ref($targetsource) eq 'ARRAY');
+ my ($target,$source)=@{$targetsource};
+ if ($source ne '') {
+ if (open(my $logfh,'>>'.$source.'.log')) {
+ print $logfh "\nCleanup phase: Notifications\n";
+ my @subscribed=&subscribed_hosts($target);
+ foreach my $subhost (@subscribed) {
+ print $logfh "\nNotifying host ".$subhost.':';
+ my $reply=&Apache::lonnet::critical('update:'.$target,$subhost);
+ print $logfh $reply;
+ }
+ my @subscribedmeta=&subscribed_hosts("$target.meta");
+ foreach my $subhost (@subscribedmeta) {
+ print $logfh "\nNotifying host for metadata only ".$subhost.':';
+ my $reply=&Apache::lonnet::critical('update:'.$target.'.meta',
+ $subhost);
+ print $logfh $reply;
+ }
+ print $logfh "\n============ Done ============\n";
+ close($logfh);
+ }
+ }
+ }
+ return OK;
+}
+
+sub subscribed_hosts {
+ my ($target) = @_;
+ my @subscribed;
+ if (open(my $fh,"<$target.subscription")) {
+ while (my $subline=<$fh>) {
+ if ($subline =~ /^($match_lonid):/) {
+ my $host = $1;
+ if ($host ne $Apache::lonnet::perlvar{'lonHostID'}) {
+ unless (grep(/^\Q$host\E$/,@subscribed)) {
+ push(@subscribed,$host);
+ }
+ }
+ }
+ }
+ }
+ return @subscribed;
}
sub check_switchserver {
@@ -5137,7 +5321,7 @@ sub modify_quotas {
%limithash,$toolregexp,%conditions,$resulttext,%changes);
if ($action eq 'quotas') {
$context = 'tools';
- } else {
+ } else {
$context = $action;
}
if ($context eq 'requestcourses') {
@@ -5147,8 +5331,11 @@ sub modify_quotas {
%titles = &courserequest_titles();
$toolregexp = join('|',@usertools);
%conditions = &courserequest_conditions();
+ } elsif ($context eq 'requestauthor') {
+ @usertools = ('author');
+ %titles = &authorrequest_titles();
} else {
- @usertools = ('aboutme','blog','portfolio');
+ @usertools = ('aboutme','blog','webdav','portfolio');
%titles = &tool_titles();
}
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom);
@@ -5164,6 +5351,10 @@ sub modify_quotas {
$confhash{$item}{$type} = $env{$key};
}
}
+ } elsif ($context eq 'requestauthor') {
+ if ($key =~ /^\Qform.authorreq_\E(.+)$/) {
+ $confhash{$1} = $env{$key};
+ }
} else {
if ($key =~ /^form\.quota_(.+)$/) {
$confhash{'defaultquota'}{$1} = $env{$key};
@@ -5173,7 +5364,7 @@ sub modify_quotas {
}
}
}
- if ($context eq 'requestcourses') {
+ if (($context eq 'requestcourses') || ($context eq 'requestauthor')) {
my @approvalnotify = &Apache::loncommon::get_env_multiple('form.reqapprovalnotify');
@approvalnotify = sort(@approvalnotify);
$confhash{'notify'}{'approval'} = join(',',@approvalnotify);
@@ -5209,6 +5400,11 @@ sub modify_quotas {
$confhash{$item}{$type} .= $limithash{$item}{$type};
}
}
+ } elsif ($context eq 'requestauthor') {
+ $unset = '0';
+ if ($type eq '_LC_adv') {
+ $unset = '';
+ }
} else {
if (grep(/^\Q$type\E$/,@{$toolshash{$item}})) {
$confhash{$item}{$type} = 1;
@@ -5217,7 +5413,11 @@ sub modify_quotas {
}
}
if (ref($domconfig{$action}) eq 'HASH') {
- if (ref($domconfig{$action}{$item}) eq 'HASH') {
+ if ($action eq 'requestauthor') {
+ if ($domconfig{$action}{$type} ne $confhash{$type}) {
+ $changes{$type} = 1;
+ }
+ } elsif (ref($domconfig{$action}{$item}) eq 'HASH') {
if ($domconfig{$action}{$item}{$type} ne $confhash{$item}{$type}) {
$changes{$item}{$type} = 1;
}
@@ -5237,6 +5437,10 @@ sub modify_quotas {
if ($confhash{$item}{$type} ne $unset) {
$changes{$item}{$type} = 1;
}
+ } elsif ($context eq 'requestauthor') {
+ if ($confhash{$type} ne $unset) {
+ $changes{$type} = 1;
+ }
} else {
if (!$confhash{$item}{$type}) {
$changes{$item}{$type} = 1;
@@ -5245,7 +5449,7 @@ sub modify_quotas {
}
}
}
- unless ($context eq 'requestcourses') {
+ unless (($context eq 'requestcourses') || ($context eq 'requestauthor')) {
if (ref($domconfig{'quotas'}) eq 'HASH') {
if (ref($domconfig{'quotas'}{'defaultquota'}) eq 'HASH') {
foreach my $key (keys(%{$domconfig{'quotas'}{'defaultquota'}})) {
@@ -5288,10 +5492,14 @@ sub modify_quotas {
}
}
- foreach my $key (keys(%confhash)) {
- $domdefaults{$key} = $confhash{$key};
+ if ($context eq 'requestauthor') {
+ $domdefaults{'requestauthor'} = \%confhash;
+ } else {
+ foreach my $key (keys(%confhash)) {
+ $domdefaults{$key} = $confhash{$key};
+ }
}
-
+
my %quotahash = (
$action => { %confhash }
);
@@ -5303,7 +5511,8 @@ sub modify_quotas {
&Apache::lonnet::do_cache_new('domdefaults',$dom,\%domdefaults,$cachetime);
$resulttext = &mt('Changes made:').'';
- unless ($context eq 'requestcourses') {
+ unless (($context eq 'requestcourses') ||
+ ($context eq 'requestauthor')) {
if (ref($changes{'defaultquota'}) eq 'HASH') {
$resulttext .= ''.&mt('Portfolio default quotas').'';
foreach my $type (@{$types},'default') {
@@ -5320,12 +5529,25 @@ sub modify_quotas {
}
my %newenv;
foreach my $item (@usertools) {
- if (ref($changes{$item}) eq 'HASH') {
+ my (%haschgs,%inconf);
+ if ($context eq 'requestauthor') {
+ %haschgs = %changes;
+ %inconf = %confhash;
+ } else {
+ if (ref($changes{$item}) eq 'HASH') {
+ %haschgs = %{$changes{$item}};
+ }
+ if (ref($confhash{$item}) eq 'HASH') {
+ %inconf = %{$confhash{$item}};
+ }
+ }
+ if (keys(%haschgs) > 0) {
my $newacc =
&Apache::lonnet::usertools_access($env{'user.name'},
$env{'user.domain'},
$item,'reload',$context);
- if ($context eq 'requestcourses') {
+ if (($context eq 'requestcourses') ||
+ ($context eq 'requestauthor')) {
if ($env{'environment.canrequest.'.$item} ne $newacc) {
$newenv{'environment.canrequest.'.$item} = $newacc;
}
@@ -5334,26 +5556,28 @@ sub modify_quotas {
$newenv{'environment.availabletools.'.$item} = $newacc;
}
}
- $resulttext .= ''.$titles{$item}.'';
+ unless ($context eq 'requestauthor') {
+ $resulttext .= ''.$titles{$item}.'';
+ }
foreach my $type (@{$types},'default','_LC_adv') {
- if ($changes{$item}{$type}) {
+ if ($haschgs{$type}) {
my $typetitle = $usertypes->{$type};
if ($type eq 'default') {
$typetitle = $othertitle;
} elsif ($type eq '_LC_adv') {
$typetitle = 'LON-CAPA Advanced Users';
}
- if ($confhash{$item}{$type}) {
+ if ($inconf{$type}) {
if ($context eq 'requestcourses') {
my $cond;
- if ($confhash{$item}{$type} =~ /^autolimit=(\d*)$/) {
+ if ($inconf{$type} =~ /^autolimit=(\d*)$/) {
if ($1 eq '') {
$cond = &mt('(Automatic processing of any request).');
} else {
$cond = &mt('(Automatic processing of requests up to limit of [quant,_1,request] per user).',$1);
}
} else {
- $cond = $conditions{$confhash{$item}{$type}};
+ $cond = $conditions{$inconf{$type}};
}
$resulttext .= ''.&mt('Set to be available to [_1].',$typetitle).' '.$cond.' ';
} else {
@@ -5361,7 +5585,7 @@ sub modify_quotas {
}
} else {
if ($type eq '_LC_adv') {
- if ($confhash{$item}{$type} eq '0') {
+ if ($inconf{$type} eq '0') {
$resulttext .= ''.&mt('Set to be unavailable to [_1]',$typetitle).' ';
} else {
$resulttext .= ''.&mt('No override set for [_1]',$typetitle).' ';
@@ -5372,17 +5596,19 @@ sub modify_quotas {
}
}
}
- $resulttext .= ' ';
+ unless ($context eq 'requestauthor') {
+ $resulttext .= ' ';
+ }
}
}
- if ($action eq 'requestcourses') {
+ if (($action eq 'requestcourses') || ($action eq 'requestauthor')) {
if (ref($changes{'notify'}) eq 'HASH') {
if ($changes{'notify'}{'approval'}) {
if (ref($confhash{'notify'}) eq 'HASH') {
if ($confhash{'notify'}{'approval'}) {
$resulttext .= ''.&mt('Notification of requests requiring approval will be sent to: ').$confhash{'notify'}{'approval'}.' ';
} else {
- $resulttext .= ''.&mt('No Domain Coordinators will receive notification of course requests requiring approval.').' ';
+ $resulttext .= ''.&mt('No Domain Coordinators will receive notification of requests requiring approval.').' ';
}
}
}
@@ -5395,6 +5621,8 @@ sub modify_quotas {
} else {
if ($context eq 'requestcourses') {
$resulttext = &mt('No changes made to rights to request creation of courses.');
+ } elsif ($context eq 'requestauthor') {
+ $resulttext = &mt('No changes made to rights to request author space.');
} else {
$resulttext = &mt('No changes made to availability of personal information pages, blogs, portfolios or default quotas');
}
@@ -7862,14 +8090,13 @@ sub active_dc_picker {
sub usersession_titles {
return &Apache::lonlocal::texthash(
hosted => 'Hosting of sessions for users from other domains on servers in this domain',
-
remote => 'Hosting of sessions for users in this domain on servers in other domains',
spares => 'Servers offloaded to, when busy',
version => 'LON-CAPA version requirement',
excludedomain => 'Allow all, but exclude specific domains',
includedomain => 'Deny all, but include specific domains',
primary => 'Primary (checked first)',
- default => 'Default',
+ default => 'Default',
);
}