[LON-CAPA-cvs] cvs: loncom /auth lonroles.pm
www
lon-capa-cvs-allow@mail.lon-capa.org
Sat, 26 Jan 2008 21:12:37 -0000
www Sat Jan 26 16:12:37 2008 EDT
Modified files:
/loncom/auth lonroles.pm
Log:
Bug #3765: Ad-hoc co-author
Index: loncom/auth/lonroles.pm
diff -u loncom/auth/lonroles.pm:1.181 loncom/auth/lonroles.pm:1.182
--- loncom/auth/lonroles.pm:1.181 Fri Nov 9 15:56:34 2007
+++ loncom/auth/lonroles.pm Sat Jan 26 16:12:32 2008
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# User Roles Screen
#
-# $Id: lonroles.pm,v 1.181 2007/11/09 20:56:34 albertel Exp $
+# $Id: lonroles.pm,v 1.182 2008/01/26 21:12:32 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -122,13 +122,35 @@
"request.role.adv" => $env{'user.adv'},
"request.role.domain" => $env{'user.domain'});
-# Check if user is a DC trying to enter a course and needs privs to be created
+# Check if user is a DC trying to enter a course or author space and needs privs to be created
if ($numdc > 0) {
foreach my $envkey (keys %env) {
+# Is this an ad-hoc CC-role?
if (my ($domain,$coursenum) =
($envkey =~ m-^form\.cc\./($match_domain)/($match_courseid)$-)) {
if ($dcroles{$domain}) {
- &check_privs($domain,$coursenum,$then,$now);
+ &check_privs($domain,$coursenum,$then,$now,'cc');
+ }
+ last;
+ }
+# Is this a recent ad-hoc CA-role?
+ if (my ($domain,$coursenum) =
+ ($envkey =~ m-^form\.ca\./($match_domain)/($match_courseid)$-)) {
+ if ($dcroles{$domain}) {
+ &check_privs($domain,$coursenum,$then,$now,'ca');
+ }
+ last;
+ }
+# Is this a new ad-hoc CA-role?
+ if (my ($domain) =
+ ($envkey =~ m-^form\.adhocca\./($match_domain)$-)) {
+ if ($dcroles{$domain}) {
+ my $user=$env{'form.adhoccauname.'.$domain};
+ if (!$user) { $user=$env{'form.adhoccaunamerecent.'.$domain} };
+ if (($user) && ($user=~/$match_username/)) {
+ &check_privs($domain,$user,$then,$now,'ca');
+ $env{'form.ca./'.$domain.'/'.$user}=1;
+ }
}
last;
}
@@ -669,7 +691,8 @@
$output.=$roletext{'user.role.'.$_};
if ($_ =~ m-dc\./($match_domain)/-
&& $dcroles{$1}) {
- $output .= &allcourses_row($1,'recent');
+ $output .= &allcourses_row($1,'recent').
+ &allcoauthors_row($1,'recent');
}
} elsif ($numdc > 0) {
unless ($_ =~/^error\:/) {
@@ -697,7 +720,8 @@
$output.=$roletext{$sortrole{$which}};
if ($sortrole{$which} =~ m-dc\./($match_domain)/-) {
if ($dcroles{$1}) {
- $output .= &allcourses_row($1,'');
+ $output .= &allcourses_row($1,'').
+ &allcoauthors_row($1,'');
}
}
}
@@ -882,16 +906,16 @@
}
sub check_privs {
- my ($cdom,$cnum,$then,$now) = @_;
- my $cckey = 'user.role.cc./'.$cdom.'/'.$cnum;
+ my ($cdom,$cnum,$then,$now,$checkrole) = @_;
+ my $cckey = 'user.role.'.$checkrole.'./'.$cdom.'/'.$cnum;
if ($env{$cckey}) {
my ($role,$where,$trolecode,$tstart,$tend,$tremark,$tstatus,$tpstart,$tpend,$tfont);
&role_status($cckey,$then,$now,\$role,\$where,\$trolecode,\$tstatus,\$tstart,\$tend);
unless (($tstatus eq 'is') || ($tstatus eq 'will_not')) {
- &set_privileges($cdom,$cnum);
+ &set_privileges($cdom,$cnum,$checkrole);
}
} else {
- &set_privileges($cdom,$cnum);
+ &set_privileges($cdom,$cnum,$checkrole);
}
}
@@ -1005,6 +1029,19 @@
my $ccrole = &Apache::lonnet::plaintext('cc');
$output.= '<span class="LC_rolesinfo">'.
&mt('[_1]: [_2] from domain [_3]',$ccrole,$selectlink,$dcdom).
+ '</span><br /></tr>'."\n";
+ return $output;
+}
+
+sub allcoauthors_row {
+ my ($dcdom,$rowtype) = @_;
+ my $output = '<tr bgcolor="#77FF77">'.
+ ' <td colspan="5">';
+ my $carole = &Apache::lonnet::plaintext('ca');
+ my $inputlink='<input type="text" size="10" name="adhoccauname'.$rowtype.'.'.$dcdom.'" />';
+ my $gobutton='<input type="submit" name="adhocca./'.$dcdom.'" value="'.&mt('Go').'" />';
+ $output.= '<span class="LC_rolesinfo">'.
+ &mt('[_1]: [_2] in domain [_3] [_4]',$carole,$inputlink,$dcdom,$gobutton).
'</span><br /></tr><tr><td colspan="5" height="3"></td></tr>'."\n";
return $output;
}
@@ -1015,9 +1052,9 @@
}
sub set_privileges {
- my ($dcdom,$pickedcourse) = @_;
+# role can be cc or ca
+ my ($dcdom,$pickedcourse,$role) = @_;
my $area = '/'.$dcdom.'/'.$pickedcourse;
- my $role = 'cc';
my $spec = $role.'.'.$area;
my %userroles = &Apache::lonnet::set_arearole($role,$area,'','',
$env{'user.domain'},