[LON-CAPA-cvs] cvs: loncom(version_2_9_X) /interface loncreateuser.pm
raeburn
raeburn@source.lon-capa.org
Thu, 13 Aug 2009 20:20:12 -0000
This is a MIME encoded message
--raeburn1250194812
Content-Type: text/plain
raeburn Thu Aug 13 20:20:12 2009 EDT
Modified files: (Branch: version_2_9_X)
/loncom/interface loncreateuser.pm
Log:
- Backport 1.296, 1.300.
--raeburn1250194812
Content-Type: text/plain
Content-Disposition: attachment; filename="raeburn-20090813202012.txt"
Index: loncom/interface/loncreateuser.pm
diff -u loncom/interface/loncreateuser.pm:1.295.2.2 loncom/interface/loncreateuser.pm:1.295.2.3
--- loncom/interface/loncreateuser.pm:1.295.2.2 Sat May 23 12:37:51 2009
+++ loncom/interface/loncreateuser.pm Thu Aug 13 20:20:12 2009
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Create a user
#
-# $Id: loncreateuser.pm,v 1.295.2.2 2009/05/23 12:37:51 raeburn Exp $
+# $Id: loncreateuser.pm,v 1.295.2.3 2009/08/13 20:20:12 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -282,6 +282,94 @@
return $output;
}
+sub coursereq_externaluser {
+ my ($ccuname,$ccdomain,$cdom) = @_;
+ my (@usertools,@options,%validations,%userenv,$output);
+ my %lt = &Apache::lonlocal::texthash (
+ 'official' => 'Can request creation of official courses',
+ 'unofficial' => 'Can request creation of unofficial courses',
+ 'community' => 'Can request creation of communities',
+ );
+
+ %userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname,
+ 'reqcrsotherdom.official','reqcrsotherdom.unofficial',
+ 'reqcrsotherdom.community');
+ @usertools = ('official','unofficial','community');
+ @options = ('approve','validate','autolimit');
+ %validations = &Apache::lonnet::auto_courserequest_checks($cdom);
+ my $optregex = join('|',@options);
+ my %reqtitles = &courserequest_titles();
+ foreach my $item (@usertools) {
+ my ($curroption,$currlimit,$tooloff);
+ if ($userenv{'reqcrsotherdom.'.$item} ne '') {
+ my @curr = split(',',$userenv{'reqcrsotherdom.'.$item});
+ if (grep(/^\Q$cdom\E:($optregex)=?(\d*)$/,@curr)) {
+ $curroption = $1;
+ $currlimit = $2;
+ if (!$curroption) {
+ $curroption = 'norequest';
+ }
+ }
+ } else {
+ $curroption = 'norequest';
+ $tooloff = ' checked="checked"';
+ }
+ $output.= &Apache::loncommon::start_data_table_row()."\n".
+ ' <td><span class="LC_nobreak">'.$lt{$item}.': '.
+ '<label><input type="radio" name="reqcrsotherdom_'.$item.
+ '" value="0"'.$tooloff.' />'.$reqtitles{'norequest'}.
+ '</label> ';
+ foreach my $option (@options) {
+ if ($option eq 'validate') {
+ my $canvalidate = 0;
+ if (ref($validations{$item}) eq 'HASH') {
+ if ($validations{$item}{'_external_'}) {
+ $canvalidate = 1;
+ }
+ }
+ next if (!$canvalidate);
+ }
+ my $checked = '';
+ if ($option eq $curroption) {
+ $checked = ' checked="checked"';
+ }
+ $output .= '<span class="LC_nobreak"><label>'.
+ '<input type="radio" name="reqcrsotherdom_'.$item.
+ '" value="'.$option.'"'.$checked.' />'.
+ $reqtitles{$option}.'</label> ';
+ if ($option eq 'autolimit') {
+ $output .= '<input type="text" name="reqcrsotherdom_'.
+ $item.'_limit" size="1" '.
+ 'value="'.$currlimit.'" />';
+ }
+ $output .= ' '
+ }
+ $output .= '</span></td>'."\n".
+ &Apache::loncommon::end_data_table_row()."\n";
+ }
+ return $output;
+}
+
+sub courserequest_titles {
+ my %titles = &Apache::lonlocal::texthash (
+ official => 'Official', unofficial => 'Unofficial',
+ community => 'Communities', norequest => 'Not allowed',
+ approve => 'Approval by Dom. Coord.',
+ validate => 'With validation',
+ autolimit => 'Numerical limit',
+ );
+ return %titles;
+}
+
+sub courserequest_display {
+ my %titles = &Apache::lonlocal::texthash (
+ approve => 'Yes, need approval',
+ validate => 'Yes, with validation',
+ norequest => 'No',
+ );
+ return %titles;
+}
+
# =================================================================== Phase one
sub print_username_entry_form {
@@ -874,9 +962,14 @@
}
if (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) {
$r->print('<h3>'.&mt('User Can Request Creation of Courses?').'</h3>'.
- &Apache::loncommon::start_data_table().
- &build_tools_display($ccuname,$ccdomain,'requestcourses').
- &Apache::loncommon::end_data_table());
+ &Apache::loncommon::start_data_table()).
+ if ($env{'request.role.domain'} eq $ccdomain) {
+ $r->print(&build_tools_display($ccuname,$ccdomain,'requestcourses'));
+ } else {
+ $r->print(&coursereq_externaluser($ccuname,$ccdomain,
+ $env{'request.role.domain'}));
+ }
+ $r->print(&Apache::loncommon::end_data_table());
}
$r->print('</div>');
my $user_auth_text = &user_authentication($ccuname,$ccdomain,$formname);
@@ -1998,7 +2091,9 @@
('environment',['firstname','middlename','lastname','generation',
'id','permanentemail','portfolioquota','inststatus','tools.aboutme',
'tools.blog','tools.portfolio','requestcourses.official',
- 'requestcourses.unofficial'],
+ 'requestcourses.unofficial','requestcourses.community',
+ 'reqcrsotherdom.official','reqcrsotherdom.unofficial',
+ 'reqcrsotherdom.community'],
$env{'form.ccdomain'},$env{'form.ccuname'});
my ($tmp) = keys(%userenv);
if ($tmp =~ /^(con_lost|error)/i) {
@@ -2127,7 +2222,7 @@
$oldinststatuses,$newinststatuses);
my ($defquota,$settingstatus) =
&Apache::loncommon::default_quota($env{'form.ccdomain'},$inststatus);
- my ($showquota,$showtools,$showrequestcourses,$showinststatus);
+ my ($showquota,$showtools,$showrequestcourses,$showinststatus,$showreqotherdom);
if (&Apache::lonnet::allowed('mpq',$env{'form.ccdomain'})) {
$showquota = 1;
}
@@ -2136,6 +2231,8 @@
}
if (&Apache::lonnet::allowed('ccc',$env{'form.ccdomain'})) {
$showrequestcourses = 1;
+ } elsif (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) {
+ $showreqotherdom = 1;
}
if (&Apache::lonnet::allowed('mau',$env{'form.ccdomain'})) {
$showinststatus = 1;
@@ -2219,8 +2316,14 @@
}
&tool_changes('tools',\@usertools,\%oldaccess,\%oldaccesstext,\%userenv,
\%changeHash,\%changed,\%newaccess,\%newaccesstext);
- &tool_changes('requestcourses',\@requestcourses,\%oldaccess,\%oldaccesstext,
- \%userenv, \%changeHash,\%changed,\%newaccess,\%newaccesstext);
+
+ if ($env{'form.ccdomain'} eq $env{'request.role.domain'}) {
+ &tool_changes('requestcourses',\@requestcourses,\%oldaccess,\%oldaccesstext,
+ \%userenv,\%changeHash,\%changed,\%newaccess,\%newaccesstext);
+ } else {
+ &tool_changes('reqcrsotherdom',\@requestcourses,\%oldaccess,\%oldaccesstext,
+ \%userenv,\%changeHash,\%changed,\%newaccess,\%newaccesstext);
+ }
if ($env{'form.cfirstname'} ne $userenv{'firstname'} ||
$env{'form.cmiddlename'} ne $userenv{'middlename'} ||
$env{'form.clastname'} ne $userenv{'lastname'} ||
@@ -2333,6 +2436,11 @@
$r->print("
<th>$lt{$item}</th>\n");
}
+ } elsif ($showreqotherdom) {
+ foreach my $item (@requestcourses) {
+ $r->print("
+ <th>$lt{$item}</th>\n");
+ }
}
if ($showquota) {
$r->print("
@@ -2364,6 +2472,11 @@
$r->print("
<td>$oldaccess{$item} $oldaccesstext{$item}</td>\n");
}
+ } elsif ($showreqotherdom) {
+ foreach my $item (@requestcourses) {
+ $r->print("
+ <td>$oldaccess{$item} $oldaccesstext{$item}</td>\n");
+ }
}
if ($showquota) {
$r->print("
@@ -2395,6 +2508,11 @@
$r->print("
<td>$newaccess{$item} $newaccesstext{$item} </td>\n");
}
+ } elsif ($showreqotherdom) {
+ foreach my $item (@requestcourses) {
+ $r->print("
+ <td>$newaccess{$item} $newaccesstext{$item} </td>\n");
+ }
}
if ($showquota) {
$r->print("
@@ -2463,6 +2581,11 @@
$r->print('<br />['.$lt{$item}.': '.$newaccess{$item}.' '.
$newaccesstext{$item}.']'."\n");
}
+ } elsif ($showreqotherdom) {
+ foreach my $item (@requestcourses) {
+ $r->print('<br />['.$lt{$item}.': '.$newaccess{$item}.' '.
+ $newaccesstext{$item}.']'."\n");
+ }
}
if ($showtools) {
foreach my $item (@usertools) {
@@ -2554,6 +2677,84 @@
(ref($newaccess) eq 'HASH') && (ref($newaccesstext) eq 'HASH'))) {
return;
}
+ if ($context eq 'reqcrsotherdom') {
+ my @options = ('approve','validate','autolimit');
+ my $optregex = join('|',@options);
+ my %reqdisplay = &courserequest_display();
+ my $cdom = $env{'request.role.domain'};
+ foreach my $tool (@{$usertools}) {
+ $oldaccesstext->{$tool} = &mt('no');
+ $changeHash->{$context.'.'.$tool} = $userenv->{$context.'.'.$tool
+};
+ if ($userenv->{$context.'.'.$tool} eq '') {
+ if ($env{'form.'.$context.'_'.$tool}) {
+ $changed->{$tool}=&tool_admin($tool,$cdom,
+ $changeHash,$context);
+ if ($changed->{$tool}) {
+ $newaccesstext->{$tool} = &mt('yes');
+ } else {
+ $newaccesstext->{$tool} = $oldaccesstext->{$tool}; }
+ }
+ } else {
+ my @curr = split(',',$userenv->{$context.'.'.$tool});
+ my @new;
+ my $changedoms;
+ my $newop = $env{'form.'.$context.'_'.$tool};
+ if ($newop eq 'autolimit') {
+ $newop .= '=';
+ unless ($env{'form.'.$context.'_'.$tool.'_limit'} =~ /\D/
+) {
+ $newop .= $env{'form.'.$context.'_'.$tool.'_limit'};
+ }
+ }
+ if (grep(/^\Q$cdom:($optregex\=?\d*)\E$/,@curr)) {
+ $oldaccesstext->{$tool} = &mt('yes');
+ my $oldop = $1;
+ if ($oldop ne $newop) {
+ $changedoms = 1;
+ foreach my $dom (@curr) {
+ unless ($dom eq $cdom) {
+ push(@new,$dom);
+ }
+ }
+ if ($newop) {
+ push(@new,$cdom.':'.$newop);
+ }
+ @new = sort(@new);
+ }
+ } elsif ($env{'form.'.$context.'_'.$tool}) {
+ $changedoms = 1;
+ $changedoms = 1;
+ @new = sort(@curr,$cdom.':'.$newop);
+ }
+ $newaccesstext->{$tool} = $oldaccesstext->{$tool};
+ if ($changedoms) {
+ my $newdomstr;
+ if (@new) {
+ $newdomstr = join(',',@new);
+ }
+ $changed->{$tool}=&tool_admin($tool,$newdomstr,$changeHash,
+ $context);
+ if ($changed->{$tool}) {
+ if ($env{'form.'.$context.'_'.$tool}) {
+ if ($env{'form.'.$context.'_'.$tool} eq 'autolimit') {
+ if ($env{'form.'.$context.'_'.$tool.'_limit'} =~ /\D/) {
+ $newaccesstext->{$tool} = &mt('Yes, processed automatically');
+ } else {
+ $newaccesstext->{$tool} = &mt('Yes, up to limit of [quant,_1,request] per user).',$env{'form.'.$context.'_'.$tool.'_limit'});
+ }
+ } else {
+ $newaccesstext->{$tool} = $reqdisplay{$env{'form.'.$context.'_'.$tool}};
+ }
+ } else {
+ $newaccesstext->{$tool} = &mt('No');
+ }
+ }
+ }
+ }
+ }
+ return;
+ }
foreach my $tool (@{$usertools}) {
if ($userenv->{$context.'.'.$tool} ne '') {
$oldaccess->{$tool} = &mt('custom');
@@ -2992,6 +3193,10 @@
if (&Apache::lonnet::allowed('ccc',$env{'form.ccdomain'})) {
$canchange = 1;
}
+ } elsif ($context eq 'reqcrsotherdom') {
+ if (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) {
+ $canchange = 1;
+ }
} elsif (&Apache::lonnet::allowed('mut',$env{'form.ccdomain'})) {
# Current user has quota modification privileges
$canchange = 1;
@@ -4938,7 +5143,7 @@
&mt('[_1]Note:[_2] Only changes made from servers running LON-CAPA 2.6.99.0 or later are displayed.');
if ($version) {
$output .= ' '.&mt('This server is version [_3].','<b>','</b>',$version); }
- $output .= '</span><hr noshade><br />';
+ $output .= '</span><hr /><br />';
return $output;
}
--raeburn1250194812--