version 1.118, 2006/05/30 12:46:09
|
version 1.125.2.7, 2006/09/07 21:43:20
|
Line 142 sub print_username_entry_form {
|
Line 142 sub print_username_entry_form {
|
'nr' => "Name of Role", |
'nr' => "Name of Role", |
'cre' => "Custom Role Editor" |
'cre' => "Custom Role Editor" |
); |
); |
my $help = &Apache::loncommon::help_open_menu('',undef,undef,'',282,'Instructor Interface'); |
my $help = &Apache::loncommon::help_open_menu(undef,undef,282,'Instructor Interface'); |
my $helpsiur=&Apache::loncommon::help_open_topic('Course_Change_Privileges'); |
my $helpsiur=&Apache::loncommon::help_open_topic('Course_Change_Privileges'); |
my $helpecpr=&Apache::loncommon::help_open_topic('Course_Editing_Custom_Roles'); |
my $helpecpr=&Apache::loncommon::help_open_topic('Course_Editing_Custom_Roles'); |
$r->print(<<"ENDDOCUMENT"); |
$r->print(<<"ENDDOCUMENT"); |
Line 195 sub user_modification_js {
|
Line 195 sub user_modification_js {
|
|
|
$nondc_setsection_code |
$nondc_setsection_code |
|
|
function setSections() { |
|
var re1 = /^currsec_/; |
|
var groups = new Array($groupslist); |
|
for (var i=0;i<document.cu.elements.length;i++) { |
|
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); |
|
var role = match[1]; |
|
if (role == 'cc') { |
|
alert("Section designations do not apply to Course Coordinator roles.\\nA course coordinator role will be added with access to all sections."); |
|
} |
|
else { |
|
var sections = ''; |
|
var numsec = 0; |
|
var sections; |
|
for (var j=0; j<document.cu.elements[i].length; j++) { |
|
if (document.cu.elements[i].options[j].selected == true ) { |
|
if (document.cu.elements[i].options[j].value != "") { |
|
if (numsec == 0) { |
|
if (document.cu.elements[i].options[j].value != "") { |
|
sections = document.cu.elements[i].options[j].value; |
|
numsec ++; |
|
} |
|
} |
|
else { |
|
sections = sections + "," + document.cu.elements[i].options[j].value |
|
numsec ++; |
|
} |
|
} |
|
} |
|
} |
|
if (numsec > 0) { |
|
if (document.cu.elements[i+1].value != "" && document.cu.elements[i+1].value != null) { |
|
sections = sections + "," + document.cu.elements[i+1].value; |
|
} |
|
} |
|
else { |
|
sections = document.cu.elements[i+1].value; |
|
} |
|
var newseclist = document.cu.elements[i+1].value; |
|
var newsecs = new Array(); |
|
if (newseclist != null && newseclist != "") { |
|
newsecs = newseclist.split(/,/g); |
|
numsec = numsec + newsecs.length; |
|
} |
|
if ((role == 'st') && (numsec > 1)) { |
|
alert("In each course, each user may only have one student role at a time. You had selected "+numsec+" sections.\\nPlease modify your selections so they include no more than one section.") |
|
return; |
|
} |
|
else { |
|
for (var j=0; j<newsecs.length; j++) { |
|
if ((newsecs[j] == 'all') || |
|
(newsecs[j] == 'none')) { |
|
alert("'"+newsecs[j]+"' may not be used as the name for a section, as it is a reserved word.\\nPlease choose a different section name."); |
|
return; |
|
} |
|
for (var k=0; k<groups.length; k++) { |
|
if (newsecs[j] == groups[k]) { |
|
alert("'"+newsecs[j]+"' may not be used as a section name, as it is the name of a course group.\\nSection names and group names must be distinct. Please choose a different section name."); |
|
return; |
|
} |
|
} |
|
} |
|
document.cu.elements[i+2].value = sections; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
document.cu.submit(); |
|
} |
|
</script> |
</script> |
END |
END |
} |
} |
Line 304 sub print_user_modification_page {
|
Line 229 sub print_user_modification_page {
|
$ccdomain=~s/\W//g; |
$ccdomain=~s/\W//g; |
my $pjump_def = &Apache::lonhtmlcommon::pjump_javascript_definition(); |
my $pjump_def = &Apache::lonhtmlcommon::pjump_javascript_definition(); |
my $dc_setcourse_code = ''; |
my $dc_setcourse_code = ''; |
my $nondc_setsection_code = ''; |
my $nondc_setsection_code = ''; |
|
|
my %loaditem; |
my %loaditem; |
|
|
my $groupslist; |
my $groupslist; |
Line 316 sub print_user_modification_page {
|
Line 242 sub print_user_modification_page {
|
|
|
if ($env{'request.role'} =~ m-^dc\./(\w+)/$-) { |
if ($env{'request.role'} =~ m-^dc\./(\w+)/$-) { |
my $dcdom = $1; |
my $dcdom = $1; |
$loaditem{'onload'} = "document.cu.coursedesc.value=''"; |
$loaditem{'onload'} = "document.cu.coursedesc.value='';"; |
|
my @rolevals = ('st','ta','ep','in','cc'); |
|
my (@crsroles,@grproles); |
|
for (my $i=0; $i<@rolevals; $i++) { |
|
$crsroles[$i]=&Apache::lonnet::plaintext($rolevals[$i],'Course'); |
|
$grproles[$i]=&Apache::lonnet::plaintext($rolevals[$i],'Group'); |
|
} |
|
my $rolevalslist = join('","',@rolevals); |
|
my $crsrolenameslist = join('","',@crsroles); |
|
my $grprolenameslist = join('","',@grproles); |
|
my $pickcrsfirst = '<--'.&mt('Pick course first'); |
|
my $pickgrpfirst = '<--'.&mt('Pick group first'); |
$dc_setcourse_code = <<"ENDSCRIPT"; |
$dc_setcourse_code = <<"ENDSCRIPT"; |
function setCourse() { |
function setCourse() { |
var course = document.cu.dccourse.value; |
var course = document.cu.dccourse.value; |
Line 386 sub print_user_modification_page {
|
Line 323 sub print_user_modification_page {
|
document.cu.elements[numcourse].name = "act"+coursename |
document.cu.elements[numcourse].name = "act"+coursename |
document.cu.elements[numcourse+4].name = "sec"+coursename |
document.cu.elements[numcourse+4].name = "sec"+coursename |
document.cu.elements[numcourse+4].value = section |
document.cu.elements[numcourse+4].value = section |
document.cu.elements[numcourse+5].name = "start"+coursename |
document.cu.elements[numcourse+6].name = "start"+coursename |
document.cu.elements[numcourse+6].name = "end"+coursename |
document.cu.elements[numcourse+7].name = "end"+coursename |
} |
} |
} |
} |
document.cu.submit(); |
document.cu.submit(); |
Line 401 sub print_user_modification_page {
|
Line 338 sub print_user_modification_page {
|
} |
} |
return -1; |
return -1; |
} |
} |
|
|
|
function setType() { |
|
var crstype = 'Course' |
|
rolevals = new Array("$rolevalslist"); |
|
if (crstype == 'Group') { |
|
if (document.cu.currsec.options[0].text == "$pickcrsfirst") { |
|
document.cu.currsec.options[0].text = "$pickgrpfirst"; |
|
} |
|
grprolenames = new Array("$grprolenameslist"); |
|
for (var i=0; i<rolevals.length; i++) { |
|
if (document.cu.role.selectedIndex == i) { |
|
document.cu.role.options[i] = new Option(grprolenames[i],rolevals[i],true,false); |
|
} else { |
|
document.cu.role.options[i] = new Option(grprolenames[i],rolevals[i],false,false); |
|
} |
|
} |
|
} else { |
|
if (document.cu.currsec.options[0].text == "$pickgrpfirst") { |
|
document.cu.currsec.options[0].text = "$pickcrsfirst"; |
|
} |
|
crsrolenames = new Array("$crsrolenameslist"); |
|
for (var i=0; i<rolevals.length; i++) { |
|
if (document.cu.role.selectedIndex == i) { |
|
document.cu.role.options[i] = new Option(crsrolenames[i],rolevals[i],true,false); |
|
} else { |
|
document.cu.role.options[i] = new Option(crsrolenames[i],rolevals[i],false,false); |
|
} |
|
} |
|
} |
|
} |
ENDSCRIPT |
ENDSCRIPT |
} else { |
} else { |
$nondc_setsection_code = <<"ENDSECCODE"; |
$nondc_setsection_code = <<"ENDSECCODE"; |
Line 411 ENDSCRIPT
|
Line 378 ENDSCRIPT
|
var str = document.cu.elements[i].name; |
var str = document.cu.elements[i].name; |
var checkcurr = str.match(re1); |
var checkcurr = str.match(re1); |
if (checkcurr != null) { |
if (checkcurr != null) { |
var re2 = /^currsec_[a-zA-Z0-9]+_[a-zA-Z0-9]+_(\\w+)\$/; |
|
if (document.cu.elements[i-1].checked == true) { |
if (document.cu.elements[i-1].checked == true) { |
var re2 = /^currsec_[a-zA-Z0-9]+_[a-zA-Z0-9]+_(\\w+)\$/; |
var re2 = /^currsec_[a-zA-Z0-9]+_[a-zA-Z0-9]+_(\\w+)\$/; |
match = re2.exec(str); |
match = re2.exec(str); |
Line 448 ENDSCRIPT
|
Line 414 ENDSCRIPT
|
sections = document.cu.elements[i+1].value; |
sections = document.cu.elements[i+1].value; |
} |
} |
var newsecs = document.cu.elements[i+1].value; |
var newsecs = document.cu.elements[i+1].value; |
|
var numsplit; |
if (newsecs != null && newsecs != "") { |
if (newsecs != null && newsecs != "") { |
var numsplit = newsecs.split(/,/g); |
numsplit = newsecs.split(/,/g); |
numsec = numsec + numsplit.length; |
numsec = numsec + numsplit.length; |
} |
} |
|
|
if ((role == 'st') && (numsec > 1)) { |
if ((role == 'st') && (numsec > 1)) { |
alert("In each course, each user may only have one student role at a time. You had selected "+numsec+" sections.\\nPlease modify your selections so they include no more than one section.") |
alert("In each course, each user may only have one student role at a time. You had selected "+numsec+" sections.\\nPlease modify your selections so they include no more than one section.") |
return; |
return; |
} |
} |
else { |
else if (numsplit != null) { |
for (var j=0; j<numsplit.length; j++) { |
for (var j=0; j<numsplit.length; j++) { |
if ((numsplit[j] == 'all') || |
if ((numsplit[j] == 'all') || |
(numsplit[j] == 'none')) { |
(numsplit[j] == 'none')) { |
Line 470 ENDSCRIPT
|
Line 438 ENDSCRIPT
|
} |
} |
} |
} |
} |
} |
document.cu.elements[i+2].value = sections; |
|
} |
} |
|
document.cu.elements[i+2].value = sections; |
} |
} |
} |
} |
} |
} |
Line 636 END
|
Line 604 END
|
if ($area =~ /^\/(\w+)\/(\d\w+)/ ) { |
if ($area =~ /^\/(\w+)\/(\d\w+)/ ) { |
$class='Course'; |
$class='Course'; |
my ($coursedom,$coursedir) = ($1,$2); |
my ($coursedom,$coursedir) = ($1,$2); |
$sortkey.="\0$1"; |
$sortkey.="\0$coursedom"; |
# $1.'_'.$2 is the course id (eg. 103_12345abcef103l3). |
# $1.'_'.$2 is the course id (eg. 103_12345abcef103l3). |
my %coursedata= |
my %coursedata= |
&Apache::lonnet::coursedescription($1.'_'.$2); |
&Apache::lonnet::coursedescription($1.'_'.$2); |
Line 646 END
|
Line 614 END
|
'<br />'.&mt('Domain').': '.$coursedom.(' 'x8). |
'<br />'.&mt('Domain').': '.$coursedom.(' 'x8). |
&Apache::loncommon::syllabuswrapper('Syllabus',$coursedir,$coursedom); |
&Apache::loncommon::syllabuswrapper('Syllabus',$coursedir,$coursedom); |
$sortkey.="\0".$coursedata{'description'}; |
$sortkey.="\0".$coursedata{'description'}; |
|
$class=$coursedata{'type'}; |
} else { |
} else { |
$carea=&mt('Unavailable course').': '.$area; |
$carea=&mt('Unavailable course').': '.$area; |
$sortkey.="\0".&mt('Unavailable course').': '.$area; |
$sortkey.="\0".&mt('Unavailable course').': '.$area; |
} |
} |
|
$sortkey.="\0$coursedir"; |
$inccourses{$1.'_'.$2}=1; |
$inccourses{$1.'_'.$2}=1; |
if ((&Apache::lonnet::allowed('c'.$role_code,$1.'/'.$2)) || |
if ((&Apache::lonnet::allowed('c'.$role_code,$1.'/'.$2)) || |
(&Apache::lonnet::allowed('c'.$role_code,$ccdomain))) { |
(&Apache::lonnet::allowed('c'.$role_code,$ccdomain))) { |
Line 737 END
|
Line 707 END
|
} |
} |
my $plaintext=''; |
my $plaintext=''; |
unless ($croletitle) { |
unless ($croletitle) { |
$plaintext=&Apache::lonnet::plaintext($role_code); |
$plaintext=&Apache::lonnet::plaintext($role_code,$class) |
} else { |
} else { |
$plaintext= |
$plaintext= |
"Customrole '$croletitle' defined by $croleuname\@$croleudom"; |
"Customrole '$croletitle' defined by $croleuname\@$croleudom"; |
Line 757 END
|
Line 727 END
|
} # end of foreach (table building loop) |
} # end of foreach (table building loop) |
my $rolesdisplay = 0; |
my $rolesdisplay = 0; |
my %output = (); |
my %output = (); |
foreach my $type ('Construction Space','Course','Domain','System','Unknown') { |
foreach my $type ('Construction Space','Course','Group','Domain','System','Unknown') { |
$output{$type} = ''; |
$output{$type} = ''; |
foreach my $which (sort {uc($a) cmp uc($b)} (keys(%sortrole))) { |
foreach my $which (sort {uc($a) cmp uc($b)} (keys(%sortrole))) { |
if ( ($roleclass{$sortrole{$which}} =~ /^\Q$type\E/ ) && ($rolepriv{$sortrole{$which}}) ) { |
if ( ($roleclass{$sortrole{$which}} =~ /^\Q$type\E/ ) && ($rolepriv{$sortrole{$which}}) ) { |
Line 779 END
|
Line 749 END
|
<tr><th>$lt{'rev'}</th><th>$lt{'ren'}</th><th>$lt{'del'}</th><th>$lt{'rol'}</th><th>$lt{'e |
<tr><th>$lt{'rev'}</th><th>$lt{'ren'}</th><th>$lt{'del'}</th><th>$lt{'rol'}</th><th>$lt{'e |
xt'}</th><th>$lt{'sta'}</th><th>$lt{'end'}</th> |
xt'}</th><th>$lt{'sta'}</th><th>$lt{'end'}</th> |
END |
END |
foreach my $type ('Construction Space','Course','Domain','System','Unknown') { |
foreach my $type ('Construction Space','Course','Group','Domain','System','Unknown') { |
if ($output{$type}) { |
if ($output{$type}) { |
$r->print($output{$type}."\n"); |
$r->print($output{$type}."\n"); |
} |
} |
Line 977 ENDDROW
|
Line 947 ENDDROW
|
$r->print($domaintext); |
$r->print($domaintext); |
} |
} |
# |
# |
# Course level |
# Course and group levels |
# |
# |
|
|
if ($env{'request.role'} =~ m-^dc\./(\w+)/$-) { |
if ($env{'request.role'} =~ m-^dc\./(\w+)/$-) { |
$r->print(&course_level_dc($1)); |
$r->print(&course_level_dc($1,'Course')); |
$r->print('<hr /><input type="button" value="'.&mt('Modify User').'" onClick="setCourse()">'."\n"); |
$r->print('<hr /><input type="button" value="'.&mt('Modify User').'" onClick="setCourse()">'."\n"); |
} else { |
} else { |
$r->print(&course_level_table(%inccourses)); |
$r->print(&course_level_table(%inccourses)); |
Line 1281 END
|
Line 1251 END
|
my $output; |
my $output; |
if ($role eq 'st') { |
if ($role eq 'st') { |
if ($url =~ m-^/(\w+)/(\w+)/?(\w*)$-) { |
if ($url =~ m-^/(\w+)/(\w+)/?(\w*)$-) { |
my $result = &commit_studentrole(\$logmsg,$udom,$uname,$url,$role,$now,0,$1,$2,$3); |
my $result = &Apache::loncommon::commit_studentrole(\$logmsg,$udom,$uname,$url,$role,$now,0,$1,$2,$3); |
if (($result =~ /^error/) || ($result eq 'not_in_class') || ($result eq 'unknown_course')) { |
if (($result =~ /^error/) || ($result eq 'not_in_class') || ($result eq 'unknown_course')) { |
$output = "Error: $result\n"; |
$output = "Error: $result\n"; |
} else { |
} else { |
Line 1328 END
|
Line 1298 END
|
my %sections = (); |
my %sections = (); |
my $num_sections = &build_roles($env{'form.sec_'.$full},\%sections,$5); |
my $num_sections = &build_roles($env{'form.sec_'.$full},\%sections,$5); |
if ($num_sections == 0) { |
if ($num_sections == 0) { |
$r->print(&commit_customrole($udom,$uname,$url,$three,$four,$five,$start,$end)); |
$r->print(&Apache::loncommon::commit_customrole($udom,$uname,$url,$three,$four,$five,$start,$end)); |
} else { |
} else { |
my %curr_groups = |
my %curr_groups = |
&Apache::longroup::coursegroups($one,$two); |
&Apache::longroup::coursegroups($one,$two); |
Line 1339 END
|
Line 1309 END
|
next; |
next; |
} |
} |
my $securl = $url.'/'.$sec; |
my $securl = $url.'/'.$sec; |
$r->print(&commit_customrole($udom,$uname,$securl,$three,$four,$five,$start,$end)); |
$r->print(&Apache::loncommon::commit_customrole($udom,$uname,$securl,$three,$four,$five,$start,$end)); |
} |
} |
} |
} |
} elsif ($_=~/^form\.act\_([^\_]+)\_(\w+)\_([^\_]+)$/) { |
} elsif ($_=~/^form\.act\_([^\_]+)\_(\w+)\_([^\_]+)$/) { |
Line 1358 END
|
Line 1328 END
|
my %sections = (); |
my %sections = (); |
my $num_sections = &build_roles($env{'form.sec_'.$one.'_'.$two.'_'.$three},\%sections,$three); |
my $num_sections = &build_roles($env{'form.sec_'.$one.'_'.$two.'_'.$three},\%sections,$three); |
if ($num_sections == 0) { |
if ($num_sections == 0) { |
$r->print(&commit_standardrole($udom,$uname,$url,$three,$start,$end,$one,$two,'')); |
$r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$url,$three,$start,$end,$one,$two,'')); |
} else { |
} else { |
my %curr_groups = |
my %curr_groups = |
&Apache::longroup::coursegroups($one,$two); |
&Apache::longroup::coursegroups($one,$two); |
Line 1372 END
|
Line 1342 END
|
next; |
next; |
} |
} |
my $securl = $url.'/'.$sec; |
my $securl = $url.'/'.$sec; |
$r->print(&commit_standardrole($udom,$uname,$securl,$three,$start,$end,$one,$two,$sec)); |
$r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$securl,$three,$start,$end,$one,$two,$sec)); |
} else { |
} else { |
$emptysec = 1; |
$emptysec = 1; |
} |
} |
} |
} |
if ($emptysec) { |
if ($emptysec) { |
$r->print(&commit_standardrole($udom,$uname,$url,$three,$start,$end,$one,$two,'')); |
$r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$url,$three,$start,$end,$one,$two,'')); |
} |
} |
} |
} |
} elsif ($_=~/^form\.act\_([^\_]+)\_([^\_]+)$/) { |
} elsif ($_=~/^form\.act\_([^\_]+)\_([^\_]+)$/) { |
Line 1395 END
|
Line 1365 END
|
my %sections = (); |
my %sections = (); |
my $num_sections = &build_roles($env{'form.sec_'.$1.'_'.$2},\%sections,$2); |
my $num_sections = &build_roles($env{'form.sec_'.$1.'_'.$2},\%sections,$2); |
if ($num_sections == 0) { |
if ($num_sections == 0) { |
$r->print(&commit_standardrole($udom,$uname,$url,$2,$start,$end,$1,undef,'')); |
$r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$url,$2,$start,$end,$1,undef,'')); |
} else { |
} else { |
my $emptysec = 0; |
my $emptysec = 0; |
foreach my $sec (sort {$a cmp $b} keys %sections) { |
foreach my $sec (sort {$a cmp $b} keys %sections) { |
if ($sec ne '') { |
if ($sec ne '') { |
my $securl = $url.'/'.$sec; |
my $securl = $url.'/'.$sec; |
$r->print(&commit_standardrole($udom,$uname,$securl,$2,$start,$end,$1,undef,$sec)); |
$r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$securl,$2,$start,$end,$1,undef,$sec)); |
} else { |
} else { |
$emptysec = 1; |
$emptysec = 1; |
} |
} |
} |
} |
if ($emptysec) { |
if ($emptysec) { |
$r->print(&commit_standardrole($udom,$uname,$url,$2,$start,$end,$1,undef,'')); |
$r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$url,$2,$start,$end,$1,undef,'')); |
} |
} |
} |
} |
} else { |
} else { |
Line 1429 END
|
Line 1399 END
|
$r->print(&Apache::loncommon::end_page()); |
$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):'').': <b>'. |
|
&Apache::lonnet::assigncustomrole( |
|
$udom,$uname,$url,$three,$four,$five,$end,$start). |
|
'</b><br />'; |
|
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):''). |
|
': <b>'.$result.'</b><br />'. |
|
&mt('Add to classlist').': <b>ok</b><br />'; |
|
} |
|
} else { |
|
$output = &mt('Assigning').' '.$three.' in '.$url. |
|
($start?', '.&mt('starting').' '.localtime($start):''). |
|
($end?', '.&mt('ending').' '.localtime($end):'').': <b>'. |
|
&Apache::lonnet::assignrole( |
|
$udom,$uname,$url,$three,$end,$start). |
|
'</b><br />'; |
|
} |
|
return $output; |
|
} |
|
|
|
sub commit_studentrole { |
|
my ($logmsg,$udom,$uname,$url,$three,$start,$end,$one,$two,$sec) = @_; |
|
my $linefeed = '<br />'."\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 { |
sub build_roles { |
my ($sectionstr,$sections,$role) = @_; |
my ($sectionstr,$sections,$role) = @_; |
my $num_sections = 0; |
my $num_sections = 0; |
Line 1541 sub build_roles {
|
Line 1428 sub build_roles {
|
$num_sections ++; |
$num_sections ++; |
} |
} |
} |
} |
|
|
return $num_sections; |
return $num_sections; |
} |
} |
|
|
Line 1628 sub custom_role_editor {
|
Line 1515 sub custom_role_editor {
|
<tr><th>$lt{'prv'}</th><th>$lt{'crl'}</th><th>$lt{'dml'}</th> |
<tr><th>$lt{'prv'}</th><th>$lt{'crl'}</th><th>$lt{'dml'}</th> |
<th>$lt{'ssl'}</th></tr> |
<th>$lt{'ssl'}</th></tr> |
ENDCCF |
ENDCCF |
foreach (sort keys %full) { |
foreach my $priv (sort keys %full) { |
$r->print('<tr><td>'.&Apache::lonnet::plaintext($_).'</td><td>'. |
my $privtext = &Apache::lonnet::plaintext($priv); |
($courselevel{$_}?'<input type="checkbox" name="'.$_.':c" '. |
$r->print('<tr><td>'.$privtext.'</td><td>'. |
($courselevelcurrent{$_}?'checked="1"':'').' />':' '). |
($courselevel{$priv}?'<input type="checkbox" name="'.$priv.':c" '. |
|
($courselevelcurrent{$priv}?'checked="1"':'').' />':' '). |
'</td><td>'. |
'</td><td>'. |
($domainlevel{$_}?'<input type="checkbox" name="'.$_.':d" '. |
($domainlevel{$priv}?'<input type="checkbox" name="'.$priv.':d" '. |
($domainlevelcurrent{$_}?'checked="1"':'').' />':' '). |
($domainlevelcurrent{$priv}?'checked="1"':'').' />':' '). |
'</td><td>'. |
'</td><td>'. |
($systemlevel{$_}?'<input type="checkbox" name="'.$_.':s" '. |
($systemlevel{$priv}?'<input type="checkbox" name="'.$priv.':s" '. |
($systemlevelcurrent{$_}?'checked="1"':'').' />':' '). |
($systemlevelcurrent{$priv}?'checked="1"':'').' />':' '). |
'</td></tr>'); |
'</td></tr>'); |
} |
} |
$r->print( |
$r->print( |
Line 1780 sub course_level_table {
|
Line 1668 sub course_level_table {
|
$thiscourse=~s:_:/:g; |
$thiscourse=~s:_:/:g; |
my %coursedata=&Apache::lonnet::coursedescription($thiscourse); |
my %coursedata=&Apache::lonnet::coursedescription($thiscourse); |
my $area=$coursedata{'description'}; |
my $area=$coursedata{'description'}; |
|
my $type=$coursedata{'type'}; |
if (!defined($area)) { $area=&mt('Unavailable course').': '.$_; } |
if (!defined($area)) { $area=&mt('Unavailable course').': '.$_; } |
my $bgcol=$thiscourse; |
my $bgcol=$thiscourse; |
$bgcol=~s/[^7-9a-e]//g; |
$bgcol=~s/[^7-9a-e]//g; |
Line 1792 sub course_level_table {
|
Line 1681 sub course_level_table {
|
&Apache::loncommon::get_sections($domain,$cnum); |
&Apache::loncommon::get_sections($domain,$cnum); |
} |
} |
} |
} |
foreach ('st','ta','ep','ad','in','cc') { |
foreach ('st','ta','ep','in','cc') { |
if (&Apache::lonnet::allowed('c'.$_,$thiscourse)) { |
if (&Apache::lonnet::allowed('c'.$_,$thiscourse)) { |
my $plrole=&Apache::lonnet::plaintext($_); |
my $plrole=&Apache::lonnet::plaintext($_); |
$table .= <<ENDEXTENT; |
$table .= <<ENDEXTENT; |
Line 1911 sub course_level_dc {
|
Line 1800 sub course_level_dc {
|
'<input type="hidden" name="origdom" value="'.$dcdom.'" />'. |
'<input type="hidden" name="origdom" value="'.$dcdom.'" />'. |
'<input type="hidden" name="dccourse" value="" />'; |
'<input type="hidden" name="dccourse" value="" />'; |
my $courseform='<b>'.&Apache::loncommon::selectcourse_link |
my $courseform='<b>'.&Apache::loncommon::selectcourse_link |
('cu','dccourse','dcdomain','coursedesc').'</b>'; |
('cu','dccourse','dcdomain','coursedesc',undef,undef,'Course').'</b>'; |
|
my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($dcdom); |
my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($dcdom,$dcdom); |
|
my %lt=&Apache::lonlocal::texthash( |
my %lt=&Apache::lonlocal::texthash( |
'crl' => "Course Level", |
'typ' => "Type", |
'crt' => "Course Title", |
|
'rol' => "Role", |
'rol' => "Role", |
'grs' => "Section", |
'grs' => "Section", |
'exs' => "Existing sections", |
'exs' => "Existing sections", |
Line 1926 sub course_level_dc {
|
Line 1813 sub course_level_dc {
|
'ssd' => "Set Start Date", |
'ssd' => "Set Start Date", |
'sed' => "Set End Date" |
'sed' => "Set End Date" |
); |
); |
my $header = '<h4>'.$lt{'crl'}.'</h4>'. |
my $header = '<h4>'.&mt('Course Level').'</h4>'. |
'<table border="2"><tr><th>'.$courseform.'</th><th>'.$lt{'rol'}.'</th><th>'.$lt{'grs'}.'</th><th>'.$lt{'sta'}.'</th><th>'.$lt{'end'}.'</th></tr>'; |
'<table border="2"><tr><th>'.$courseform.'</th><th>'.$lt{'rol'}.'</th><th>'.$lt{'grs'}.'</th><th>'.$lt{'sta'}.'</th><th>'.$lt{'end'}.'</th></tr>'; |
my $otheritems = '<tr><td><input type="text" name="coursedesc" value="" onFocus="this.blur();opencrsbrowser('."'".'cu'."'".','."'".'dccourse'."'".','."'".'dcdomain'."'".','."'".'coursedesc'."',''".')" /></td>'. |
my $otheritems = '<tr><td><input type="text" name="coursedesc" value="" onFocus="this.blur();opencrsbrowser('."'cu','dccourse','dcdomain','coursedesc',".')" /></td>'."\n". |
'<td><select name="role">'."\n"; |
'<td><select name="role">'."\n"; |
foreach ('st','ta','ep','ad','in','cc') { |
foreach ('st','ta','ep','in','cc') { |
my $plrole=&Apache::lonnet::plaintext($_); |
my $plrole=&Apache::lonnet::plaintext($_); |
$otheritems .= ' <option value="'.$_.'">'.$plrole; |
$otheritems .= ' <option value="'.$_.'">'.$plrole; |
} |
} |