--- loncom/interface/loncreateuser.pm 2006/08/17 22:45:18 1.125.2.5
+++ loncom/interface/loncreateuser.pm 2006/06/29 17:38:44 1.126
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Create a user
#
-# $Id: loncreateuser.pm,v 1.125.2.5 2006/08/17 22:45:18 albertel Exp $
+# $Id: loncreateuser.pm,v 1.126 2006/06/29 17:38:44 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -378,6 +378,7 @@ ENDSCRIPT
var str = document.cu.elements[i].name;
var checkcurr = str.match(re1);
if (checkcurr != null) {
+ var re2 = /^currsec_[a-zA-Z0-9]+_[a-zA-Z0-9]+_(\\w+)\$/;
if (document.cu.elements[i-1].checked == true) {
var re2 = /^currsec_[a-zA-Z0-9]+_[a-zA-Z0-9]+_(\\w+)\$/;
match = re2.exec(str);
@@ -438,8 +439,8 @@ ENDSCRIPT
}
}
}
+ document.cu.elements[i+2].value = sections;
}
- document.cu.elements[i+2].value = sections;
}
}
}
@@ -604,7 +605,7 @@ END
if ($area =~ /^\/(\w+)\/(\d\w+)/ ) {
$class='Course';
my ($coursedom,$coursedir) = ($1,$2);
- $sortkey.="\0$coursedom";
+ $sortkey.="\0$1";
# $1.'_'.$2 is the course id (eg. 103_12345abcef103l3).
my %coursedata=
&Apache::lonnet::coursedescription($1.'_'.$2);
@@ -619,7 +620,6 @@ END
$carea=&mt('Unavailable course').': '.$area;
$sortkey.="\0".&mt('Unavailable course').': '.$area;
}
- $sortkey.="\0$coursedir";
$inccourses{$1.'_'.$2}=1;
if ((&Apache::lonnet::allowed('c'.$role_code,$1.'/'.$2)) ||
(&Apache::lonnet::allowed('c'.$role_code,$ccdomain))) {
@@ -1251,7 +1251,7 @@ END
my $output;
if ($role eq 'st') {
if ($url =~ m-^/(\w+)/(\w+)/?(\w*)$-) {
- my $result = &Apache::loncommon::commit_studentrole(\$logmsg,$udom,$uname,$url,$role,$now,0,$1,$2,$3);
+ my $result = &commit_studentrole(\$logmsg,$udom,$uname,$url,$role,$now,0,$1,$2,$3);
if (($result =~ /^error/) || ($result eq 'not_in_class') || ($result eq 'unknown_course')) {
$output = "Error: $result\n";
} else {
@@ -1298,7 +1298,7 @@ END
my %sections = ();
my $num_sections = &build_roles($env{'form.sec_'.$full},\%sections,$5);
if ($num_sections == 0) {
- $r->print(&Apache::loncommon::commit_customrole($udom,$uname,$url,$three,$four,$five,$start,$end));
+ $r->print(&commit_customrole($udom,$uname,$url,$three,$four,$five,$start,$end));
} else {
my %curr_groups =
&Apache::longroup::coursegroups($one,$two);
@@ -1309,7 +1309,7 @@ END
next;
}
my $securl = $url.'/'.$sec;
- $r->print(&Apache::loncommon::commit_customrole($udom,$uname,$securl,$three,$four,$five,$start,$end));
+ $r->print(&commit_customrole($udom,$uname,$securl,$three,$four,$five,$start,$end));
}
}
} elsif ($_=~/^form\.act\_([^\_]+)\_(\w+)\_([^\_]+)$/) {
@@ -1328,7 +1328,7 @@ END
my %sections = ();
my $num_sections = &build_roles($env{'form.sec_'.$one.'_'.$two.'_'.$three},\%sections,$three);
if ($num_sections == 0) {
- $r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$url,$three,$start,$end,$one,$two,''));
+ $r->print(&commit_standardrole($udom,$uname,$url,$three,$start,$end,$one,$two,''));
} else {
my %curr_groups =
&Apache::longroup::coursegroups($one,$two);
@@ -1342,13 +1342,13 @@ END
next;
}
my $securl = $url.'/'.$sec;
- $r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$securl,$three,$start,$end,$one,$two,$sec));
+ $r->print(&commit_standardrole($udom,$uname,$securl,$three,$start,$end,$one,$two,$sec));
} else {
$emptysec = 1;
}
}
if ($emptysec) {
- $r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$url,$three,$start,$end,$one,$two,''));
+ $r->print(&commit_standardrole($udom,$uname,$url,$three,$start,$end,$one,$two,''));
}
}
} elsif ($_=~/^form\.act\_([^\_]+)\_([^\_]+)$/) {
@@ -1365,19 +1365,19 @@ END
my %sections = ();
my $num_sections = &build_roles($env{'form.sec_'.$1.'_'.$2},\%sections,$2);
if ($num_sections == 0) {
- $r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$url,$2,$start,$end,$1,undef,''));
+ $r->print(&commit_standardrole($udom,$uname,$url,$2,$start,$end,$1,undef,''));
} else {
my $emptysec = 0;
foreach my $sec (sort {$a cmp $b} keys %sections) {
if ($sec ne '') {
my $securl = $url.'/'.$sec;
- $r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$securl,$2,$start,$end,$1,undef,$sec));
+ $r->print(&commit_standardrole($udom,$uname,$securl,$2,$start,$end,$1,undef,$sec));
} else {
$emptysec = 1;
}
}
if ($emptysec) {
- $r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$url,$2,$start,$end,$1,undef,''));
+ $r->print(&commit_standardrole($udom,$uname,$url,$2,$start,$end,$1,undef,''));
}
}
} else {
@@ -1399,6 +1399,89 @@ END
$r->print(&Apache::loncommon::end_page());
}
+sub commit_customrole {
+ my ($udom,$uname,$url,$three,$four,$five,$start,$end) = @_;
+ my $output = &mt('Assigning custom role').' "'.$five.'" by '.$four.'@'.$three.' in '.$url.
+ ($start?', '.&mt('starting').' '.localtime($start):'').
+ ($end?', ending '.localtime($end):'').': '.
+ &Apache::lonnet::assigncustomrole(
+ $udom,$uname,$url,$three,$four,$five,$end,$start).
+ '
';
+ return $output;
+}
+
+sub commit_standardrole {
+ my ($udom,$uname,$url,$three,$start,$end,$one,$two,$sec) = @_;
+ my $output;
+ my $logmsg;
+ if ($three eq 'st') {
+ my $result = &commit_studentrole(\$logmsg,$udom,$uname,$url,$three,$start,$end,$one,$two,$sec);
+ if (($result =~ /^error/) || ($result eq 'not_in_class') || ($result eq 'unknown_course')) {
+ $output = "Error: $result\n";
+ } else {
+ $output = &mt('Assigning').' '.$three.' in '.$url.
+ ($start?', '.&mt('starting').' '.localtime($start):'').
+ ($end?', '.&mt('ending').' '.localtime($end):'').
+ ': '.$result.'
'.
+ &mt('Add to classlist').': ok
';
+ }
+ } else {
+ $output = &mt('Assigning').' '.$three.' in '.$url.
+ ($start?', '.&mt('starting').' '.localtime($start):'').
+ ($end?', '.&mt('ending').' '.localtime($end):'').': '.
+ &Apache::lonnet::assignrole(
+ $udom,$uname,$url,$three,$end,$start).
+ '
';
+ }
+ return $output;
+}
+
+sub commit_studentrole {
+ my ($logmsg,$udom,$uname,$url,$three,$start,$end,$one,$two,$sec) = @_;
+ my $linefeed = '
'."\n";
+ my $result;
+ if (defined($one) && defined($two)) {
+ my $cid=$one.'_'.$two;
+ my $oldsec=&Apache::lonnet::getsection($udom,$uname,$cid);
+ my $secchange = 0;
+ my $expire_role_result;
+ my $modify_section_result;
+ unless ($oldsec eq '-1') {
+ unless ($sec eq $oldsec) {
+ $secchange = 1;
+ my $uurl='/'.$cid;
+ $uurl=~s/\_/\//g;
+ if ($oldsec) {
+ $uurl.='/'.$oldsec;
+ }
+ $expire_role_result = &Apache::lonnet::assignrole($udom,$uname,$uurl,'st',time);
+ $result = $expire_role_result;
+ }
+ }
+ if (($expire_role_result eq 'ok') || ($secchange == 0)) {
+ $modify_section_result = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,'','',$cid);
+ if ($modify_section_result =~ /^ok/) {
+ if ($secchange == 1) {
+ $$logmsg .= "Section for $uname switched from old section: $oldsec to new section: $sec".$linefeed;
+ } elsif ($oldsec eq '-1') {
+ $$logmsg .= "New student role for $uname in section $sec in course $cid".$linefeed;
+ } else {
+ $$logmsg .= "Student $uname assigned to unchanged section $sec in course $cid".$linefeed;
+ }
+ } else {
+ $$logmsg .= "Error when attempting section change for $uname from old section $oldsec to new section: $sec in course $cid -error: $modify_section_result".$linefeed;
+ }
+ $result = $modify_section_result;
+ } elsif ($secchange == 1) {
+ $$logmsg .= "Error when attempting to expire role for $uname in old section $oldsec in course $cid -error: $expire_role_result".$linefeed;
+ }
+ } else {
+ $$logmsg .= "Incomplete course id defined. Addition of user $uname from domain $udom to course $one\_$two, section $sec not completed.$linefeed";
+ $result = "error: incomplete course id\n";
+ }
+ return $result;
+}
+
sub build_roles {
my ($sectionstr,$sections,$role) = @_;
my $num_sections = 0;
@@ -1428,7 +1511,7 @@ sub build_roles {
$num_sections ++;
}
}
-
+
return $num_sections;
}
@@ -1503,7 +1586,7 @@ sub custom_role_editor {
}
my %lt=&Apache::lonlocal::texthash(
'prv' => "Privilege",
- 'crl' => "Course Level",
+ 'crl' => "Course/Group Level",
'dml' => "Domain Level",
'ssl' => "System Level"
);
@@ -1653,7 +1736,7 @@ sub course_level_table {
'new' => "Define new section",
'ssd' => "Set Start Date",
'sed' => "Set End Date",
- 'crl' => "Course Level",
+ 'crl' => "Course/Group Level",
'act' => "Activate",
'rol' => "Role",
'ext' => "Extent",