[LON-CAPA-cvs] cvs: loncom /interface loncreateuser.pm
raeburn
raeburn@source.lon-capa.org
Mon, 27 Jul 2009 14:09:14 -0000
This is a MIME encoded message
--raeburn1248703754
Content-Type: text/plain
raeburn Mon Jul 27 14:09:14 2009 EDT
Modified files:
/loncom/interface loncreateuser.pm
Log:
- Domain Coordinators can permit course requests to be made by users in other domains, on a user-by-user basis.
--raeburn1248703754
Content-Type: text/plain
Content-Disposition: attachment; filename="raeburn-20090727140914.txt"
Index: loncom/interface/loncreateuser.pm
diff -u loncom/interface/loncreateuser.pm:1.299 loncom/interface/loncreateuser.pm:1.300
--- loncom/interface/loncreateuser.pm:1.299 Sat Jul 25 14:44:50 2009
+++ loncom/interface/loncreateuser.pm Mon Jul 27 14:09:14 2009
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Create a user
#
-# $Id: loncreateuser.pm,v 1.299 2009/07/25 14:44:50 raeburn Exp $
+# $Id: loncreateuser.pm,v 1.300 2009/07/27 14:09:14 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -284,6 +284,40 @@
return $output;
}
+sub coursereq_externaluser {
+ my ($ccuname,$ccdomain,$cdom) = @_;
+ my (@usertools,%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');
+ foreach my $item (@usertools) {
+ my ($tool_on,$tool_off);
+ $tool_off = 'checked="checked" ';
+ if ($userenv{'reqcrsotherdom.'.$item} ne '') {
+ my @curr = split(',',$userenv{'reqcrsotherdom.'.$item});
+ if (grep(/^\Q$cdom\E$/,@curr)) {
+ $tool_on = 'checked="checked" ';
+ $tool_off = '';
+ }
+ }
+ $output .= &Apache::loncommon::start_data_table_row()."\n".
+ ' <td><span class="LC_nobreak">'.$lt{$item}.': <label>'.
+ '<input type="radio" name="reqcrsotherdom_'.$item.'" value="1" '.
+ $tool_on.'/>'.&mt('Yes').'</label> <label>'.
+ '<input type="radio" name="reqcrsotherdom_'.$item.'" value="0" '.
+ $tool_off.'/>'.&mt('No').'</label></span></td>'."\n".
+ &Apache::loncommon::end_data_table_row()."\n";
+ }
+ return $output;
+}
+
# =================================================================== Phase one
sub print_username_entry_form {
@@ -875,10 +909,15 @@
$r->print(&Apache::lonuserutils::forceid_change($context));
}
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());
+ $r->print('<h3>'.&mt('User Can Request Creation of Courses in this Domain?').'</h3>'.
+ &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);
@@ -2000,7 +2039,9 @@
('environment',['firstname','middlename','lastname','generation',
'id','permanentemail','portfolioquota','inststatus','tools.aboutme',
'tools.blog','tools.portfolio','requestcourses.official',
- 'requestcourses.unofficial','requestcourses.community'],
+ '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) {
@@ -2129,7 +2170,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;
}
@@ -2138,6 +2179,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;
@@ -2221,8 +2264,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'} ||
@@ -2337,6 +2386,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("
@@ -2368,6 +2422,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("
@@ -2399,6 +2458,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("
@@ -2468,6 +2532,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) {
@@ -2559,6 +2628,59 @@
(ref($newaccess) eq 'HASH') && (ref($newaccesstext) eq 'HASH'))) {
return;
}
+ if ($context eq 'reqcrsotherdom') {
+ 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;
+ if (grep(/^\Q$cdom\E$/,@curr)) {
+ $oldaccesstext->{$tool} = &mt('yes');
+ unless ($env{'form.'.$context.'_'.$tool}) {
+ $changedoms = 1;
+ foreach my $dom (@curr) {
+ unless ($dom eq $cdom) {
+ push(@new,$dom);
+ }
+ }
+ }
+ } elsif ($env{'form.'.$context.'_'.$tool}) {
+ $changedoms = 1;
+ @new = sort(@curr,$cdom);
+ }
+ $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}) {
+ $newaccesstext->{$tool} = &mt('yes');
+ } else {
+ $newaccesstext->{$tool} = &mt('no');
+ }
+ }
+ }
+ }
+ }
+ return;
+ }
foreach my $tool (@{$usertools}) {
if ($userenv->{$context.'.'.$tool} ne '') {
$oldaccess->{$tool} = &mt('custom');
@@ -2598,9 +2720,9 @@
} else {
$newaccess->{$tool} = $oldaccess->{$tool};
if ($userenv->{$context.'.'.$tool}) {
- $newaccesstext->{$tool} = &mt("availability set to 'on'");
+ $newaccesstext->{$tool} = &mt("availability set to 'on'");
} else {
- $newaccesstext->{$tool} = &mt("availability set to 'off'");
+ $newaccesstext->{$tool} = &mt("availability set to 'off'");
}
}
}
@@ -2997,6 +3119,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;
--raeburn1248703754--