version 1.87, 2004/09/23 22:51:24
|
version 1.88, 2004/11/23 18:03:04
|
Line 197 sub print_user_modification_page {
|
Line 197 sub print_user_modification_page {
|
$ccuname=~s/\W//g; |
$ccuname=~s/\W//g; |
$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 $loaditem; |
|
if ($ENV{'request.role'} =~ m-^dc\./(\w+)/$-) { |
|
my $dcdom = $1; |
|
$loaditem = qq|OnLoad="document.cu.coursedesc.value=''"|; |
|
$dc_setcourse_code = <<"ENDSCRIPT"; |
|
function setCourse() { |
|
var course = document.cu.dccourse.value; |
|
if (course != "") { |
|
if (document.cu.dcdomain.value != document.cu.origdom.value) { |
|
alert("You must select a course in the current domain"); |
|
return; |
|
} |
|
var userrole = document.cu.role.options[document.cu.role.selectedIndex].value |
|
var section; |
|
var numsections = 0; |
|
if (document.cu.role.value != "cc") { |
|
for (var i=0; i<document.cu.currsec.length; i++) { |
|
if (document.cu.currsec.options[i].selected == true ) { |
|
if (document.cu.currsec.options[i].value != "") { |
|
if (numsections == 0) { |
|
if (document.cu.currsec.options[i].value != "") { |
|
section = document.cu.currsec.options[i].value |
|
numsections = 1; |
|
} |
|
} |
|
else { |
|
section = section + "," + document.cu.currsec.options[i].value |
|
numsections ++; |
|
} |
|
} |
|
} |
|
} |
|
if (document.cu.newsec.value != "") { |
|
if (numsections == 0) { |
|
if (document.cu.newsec.value != "") { |
|
section = document.cu.newsec.value |
|
numsections = 1; |
|
} |
|
} |
|
else { |
|
section = section + "," + document.cu.newsec.value |
|
numsections ++; |
|
} |
|
} |
|
} |
|
var numcourse = getIndex(document.cu.dccourse); |
|
if (numcourse == "-1") { |
|
alert("There was a problem with your course selection"); |
|
return |
|
} |
|
else { |
|
var coursename = "_$dcdom"+"_"+course+"_"+userrole |
|
document.cu.elements[numcourse].name = "act"+coursename |
|
document.cu.elements[numcourse+4].name = "sec"+coursename |
|
document.cu.elements[numcourse+4].value = section |
|
document.cu.elements[numcourse+5].name = "start"+coursename |
|
document.cu.elements[numcourse+6].name = "end"+coursename |
|
} |
|
} |
|
document.cu.submit(); |
|
} |
|
|
|
function getIndex(caller) { |
|
for (var i=0;i<document.cu.elements.length;i++) { |
|
if (document.cu.elements[i] == caller) { |
|
return i; |
|
} |
|
} |
|
return -1; |
|
} |
|
ENDSCRIPT |
|
} |
my $dochead =<<"ENDDOCHEAD"; |
my $dochead =<<"ENDDOCHEAD"; |
<html> |
<html> |
<head> |
<head> |
Line 210 sub print_user_modification_page {
|
Line 283 sub print_user_modification_page {
|
} |
} |
|
|
$pjump_def |
$pjump_def |
|
$dc_setcourse_code |
|
|
function dateset() { |
function dateset() { |
eval("document.cu."+document.cu.pres_marker.value+ |
eval("document.cu."+document.cu.pres_marker.value+ |
Line 221 sub print_user_modification_page {
|
Line 295 sub print_user_modification_page {
|
</head> |
</head> |
ENDDOCHEAD |
ENDDOCHEAD |
$r->print(&Apache::loncommon::bodytag( |
$r->print(&Apache::loncommon::bodytag( |
'Create Users, Change User Privileges')); |
'Create Users, Change User Privileges',undef,$loaditem)); |
my $forminfo =<<"ENDFORMINFO"; |
my $forminfo =<<"ENDFORMINFO"; |
<form action="/adm/createuser" method="post" name="cu"> |
<form action="/adm/createuser" method="post" name="cu"> |
<input type="hidden" name="phase" value="update_user_data"> |
<input type="hidden" name="phase" value="update_user_data"> |
Line 682 ENDDROW
|
Line 756 ENDDROW
|
# |
# |
# Course level |
# Course level |
# |
# |
$r->print(&course_level_table(%inccourses)); |
|
$r->print("<hr /><input type=submit value=\"".&mt('Modify User')."\">\n"); |
if ($ENV{'request.role'} =~ m-^dc\./(\w+)/$-) { |
|
$r->print(&course_level_dc($1)); |
|
$r->print('<hr /><input type="button" value="'.&mt('Modify User').'" onClick="setCourse()">'."\n"); |
|
} else { |
|
$r->print(&course_level_table(%inccourses)); |
|
$r->print("<hr /><input type=submit value=\"".&mt('Modify User')."\">\n"); |
|
} |
$r->print("</form></body></html>"); |
$r->print("</form></body></html>"); |
} |
} |
|
|
Line 989 END
|
Line 1069 END
|
my ($one,$two,$three,$four,$five)=($1,$2,$3,$4,$5); |
my ($one,$two,$three,$four,$five)=($1,$2,$3,$4,$5); |
my $url='/'.$one.'/'.$two; |
my $url='/'.$one.'/'.$two; |
my $full=$one.'_'.$two.'_cr_cr_'.$three.'_'.$four.'_'.$five; |
my $full=$one.'_'.$two.'_cr_cr_'.$three.'_'.$four.'_'.$five; |
$ENV{'form.sec_'.$full}=~s/\W//g; |
|
if ($ENV{'form.sec_'.$full}) { |
|
$url.='/'.$ENV{'form.sec_'.$full}; |
|
} |
|
|
|
my $start = ( $ENV{'form.start_'.$full} ? |
my $start = ( $ENV{'form.start_'.$full} ? |
$ENV{'form.start_'.$full} : |
$ENV{'form.start_'.$full} : |
$now ); |
$now ); |
my $end = ( $ENV{'form.end_'.$full} ? |
my $end = ( $ENV{'form.end_'.$full} ? |
$ENV{'form.end_'.$full} : |
$ENV{'form.end_'.$full} : |
0 ); |
0 ); |
|
|
$r->print(&mt('Assigning custom role').' "'.$five.'" by '.$four.'@'.$three.' in '.$url. |
# split multiple sections |
($start?', '.&mt('starting').' '.localtime($start):''). |
my %sections = (); |
($end?', ending '.localtime($end):'').': <b>'. |
my $num_sections = &build_roles($ENV{'form.sec_'.$full},\%sections); |
&Apache::lonnet::assigncustomrole( |
if ($num_sections == 0) { |
$ENV{'form.ccdomain'},$ENV{'form.ccuname'},$url,$three,$four,$five,$end,$start). |
$r->print(&commit_customrole($url,$three,$four,$five,$start,$end)); |
'</b><br>'); |
} else { |
|
foreach (sort {$a cmp $b} keys %sections) { |
|
my $securl = $url.'/'.$_; |
|
$r->print(&commit_customrole($securl,$three,$four,$five,$start,$end)); |
|
} |
|
} |
} elsif ($_=~/^form\.act\_([^\_]+)\_([^\_]+)\_([^\_]+)$/) { |
} elsif ($_=~/^form\.act\_([^\_]+)\_([^\_]+)\_([^\_]+)$/) { |
# Activate roles for sections with 3 id numbers |
# Activate roles for sections with 3 id numbers |
# set start, end times, and the url for the class |
# set start, end times, and the url for the class |
Line 1018 END
|
Line 1099 END
|
$ENV{'form.end_'.$one.'_'.$two.'_'.$three} : |
$ENV{'form.end_'.$one.'_'.$two.'_'.$three} : |
0 ); |
0 ); |
my $url='/'.$one.'/'.$two; |
my $url='/'.$one.'/'.$two; |
$ENV{'form.sec_'.$one.'_'.$two.'_'.$three}=~s/\W//g; |
my $type = 'three'; |
if ($ENV{'form.sec_'.$one.'_'.$two.'_'.$three}) { |
# split multiple sections |
$url.='/'.$ENV{'form.sec_'.$one.'_'.$two.'_'.$three}; |
my %sections = (); |
} |
my $num_sections = &build_roles($ENV{'form.sec_'.$one.'_'.$two.'_'.$three},\%sections); |
# Assign the role and report it |
if ($num_sections == 0) { |
$r->print(&mt('Assigning').' '.$three.' in '.$url. |
$r->print(&commit_standardrole($url,$three,$start,$end,$one,$two)); |
($start?', '.&mt('starting').' '.localtime($start):''). |
} else { |
($end?', '.&mt('ending').' '.localtime($end):'').': <b>'. |
my $emptysec = 0; |
&Apache::lonnet::assignrole( |
foreach my $sec (sort {$a cmp $b} keys %sections) { |
$ENV{'form.ccdomain'},$ENV{'form.ccuname'}, |
$sec =~ s/\W//g; |
$url,$three,$end,$start). |
if ($sec ne '') { |
'</b><br>'); |
my $securl = $url.'/'.$sec; |
# Handle students differently |
$r->print(&commit_standardrole($securl,$three,$start,$end,$one,$two)); |
if ($three eq 'st') { |
} else { |
$url=~/^\/(\w+)\/(\w+)/; |
$emptysec = 1; |
my $cid=$one.'_'.$two; |
} |
$r->print(&mt('Add to classlist').': <b>'. |
} |
&Apache::lonnet::critical( |
if ($emptysec) { |
'put:'.$ENV{'course.'.$cid.'.domain'}.':'. |
$r->print(&commit_standardrole($url,$three,$start,$end,$one,$two)); |
$ENV{'course.'.$cid.'.num'}.':classlist:'. |
} |
&Apache::lonnet::escape( |
} |
$ENV{'form.ccuname'}.':'. |
|
$ENV{'form.ccdomain'} ).'='. |
|
&Apache::lonnet::escape($end.':'.$start), |
|
$ENV{'course.'.$cid.'.home'}) |
|
.'</b><br>'); |
|
} |
|
} elsif ($_=~/^form\.act\_([^\_]+)\_([^\_]+)$/) { |
} elsif ($_=~/^form\.act\_([^\_]+)\_([^\_]+)$/) { |
# Activate roles for sections with two id numbers |
# Activate roles for sections with two id numbers |
# set start, end times, and the url for the class |
# set start, end times, and the url for the class |
Line 1055 END
|
Line 1130 END
|
$ENV{'form.end_'.$1.'_'.$2} : |
$ENV{'form.end_'.$1.'_'.$2} : |
0 ); |
0 ); |
my $url='/'.$1.'/'; |
my $url='/'.$1.'/'; |
|
# split multiple sections |
|
my %sections = (); |
|
my $num_sections = &build_roles($ENV{'form.sec_'.$1.'_'.$2},\%sections); |
|
if ($num_sections == 0) { |
|
$r->print(&commit_standardrole($url,$2,$start,$end,$1)); |
|
} else { |
|
my $emptysec = 0; |
|
foreach my $sec (sort {$a cmp $b} keys %sections) { |
|
if ($sec ne '') { |
|
my $securl = $url.'/'.$sec; |
|
$r->print(&commit_standardrole($securl,$2,$start,$end,$1)); |
|
} else { |
|
$emptysec = 1; |
|
} |
|
} |
|
if ($emptysec) { |
|
$r->print(&commit_standardrole($url,$2,$start,$end,$1)); |
|
} |
|
} |
# Assign the role and report it. |
# Assign the role and report it. |
$r->print(&mt('Assigning').' '.$2.' in '.$url.': '. |
$r->print(&mt('Assigning').' '.$2.' in '.$url.': '. |
($start?', '.&mt('starting').' '.localtime($start):''). |
($start?', '.&mt('starting').' '.localtime($start):''). |
Line 1073 END
|
Line 1167 END
|
$r->print('</body></html>'); |
$r->print('</body></html>'); |
} |
} |
|
|
|
sub commit_customrole { |
|
my ($url,$three,$four,$five,$end,$start) = @_; |
|
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( |
|
$ENV{'form.ccdomain'},$ENV{'form.ccuname'},$url,$three,$four,$five,$end,$start). |
|
'</b><br>'; |
|
return $output; |
|
} |
|
|
|
sub commit_standardrole { |
|
my ($url,$three,$start,$end,$one,$two) = @_; |
|
my $output = (&mt('Assigning').' '.$three.' in '.$url. |
|
($start?', '.&mt('starting').' '.localtime($start):''). |
|
($end?', '.&mt('ending').' '.localtime($end):'').': <b>'. |
|
&Apache::lonnet::assignrole( |
|
$ENV{'form.ccdomain'},$ENV{'form.ccuname'}, |
|
$url,$three,$end,$start). |
|
'</b><br>'); |
|
|
|
# Handle students differently |
|
if (($three eq 'st') && defined($one) && defined($two)) { |
|
$url=~/^\/(\w+)\/(\w+)/; |
|
my $cid=$one.'_'.$two; |
|
$output .= (&mt('Add to classlist').': <b>'. |
|
&Apache::lonnet::critical( |
|
'put:'.$ENV{'course.'.$cid.'.domain'}.':'. |
|
$ENV{'course.'.$cid.'.num'}.':classlist:'. |
|
&Apache::lonnet::escape( |
|
$ENV{'form.ccuname'}.':'. |
|
$ENV{'form.ccdomain'} ).'='. |
|
&Apache::lonnet::escape($end.':'.$start), |
|
$ENV{'course.'.$cid.'.home'}) |
|
.'</b><br>'); |
|
} |
|
return $output; |
|
} |
|
|
|
|
|
sub build_roles { |
|
my ($sectionstr,$sections) = @_; |
|
my $num_sections = 0; |
|
if ($sectionstr=~ /,/) { |
|
my @secnums = split/,/,$sectionstr; |
|
foreach my $sec (@secnums) { |
|
$sec =~ ~s/\W//g; |
|
unless ($sec eq "") { |
|
if (exists($$sections{$sec})) { |
|
$$sections{$sec} ++; |
|
} else { |
|
$$sections{$sec} = 1; |
|
$num_sections ++; |
|
} |
|
} |
|
} |
|
} else { |
|
$sectionstr=~s/\W//g; |
|
unless ($sectionstr eq '') { |
|
$$sections{$sectionstr} = 1; |
|
$num_sections ++; |
|
} |
|
} |
|
|
|
return $num_sections; |
|
} |
|
|
# ========================================================== Custom Role Editor |
# ========================================================== Custom Role Editor |
|
|
sub custom_role_editor { |
sub custom_role_editor { |
Line 1376 $table
|
Line 1537 $table
|
ENDTABLE |
ENDTABLE |
return $result; |
return $result; |
} |
} |
|
|
|
sub course_level_dc { |
|
my ($dcdom) = @_; |
|
my %customroles=&my_custom_roles(); |
|
my $hiddenitems = '<input type="hidden" name="dcdomain" value="'.$dcdom.'" />'. |
|
'<input type="hidden" name="origdom" value="'.$dcdom.'" />'. |
|
'<input type="hidden" name="dccourse" value="" />'; |
|
my $courseform='<b>'.&Apache::loncommon::selectcourse_link |
|
('cu','dccourse','dcdomain','coursedesc').'</b>'; |
|
|
|
my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($dcdom,$dcdom); |
|
my %lt=&Apache::lonlocal::texthash( |
|
'crl' => "Course Level", |
|
'crt' => "Course Title", |
|
'rol' => "Role", |
|
'grs' => "Group/Section", |
|
'exs' => "Existing sections", |
|
'new' => "Define new section", |
|
'sta' => "Start", |
|
'end' => "End", |
|
'ssd' => "Set Start Date", |
|
'sed' => "Set End Date" |
|
); |
|
my $header = '<h4>'.$lt{'crl'}.'</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>'; |
|
my $otheritems = '<tr><td><input type="text" name="coursedesc" value="" onFocus="this.blur();opencrsbrowser('."'".'cu'."'".','."'".'dccourse'."'".','."'".'dcdomain'."'".','."'".'coursedesc'."'".')" /></td>'. |
|
'<td><select name="role">'."\n"; |
|
foreach ('st','ta','ep','ad','in','cc') { |
|
my $plrole=&Apache::lonnet::plaintext($_); |
|
$otheritems .= ' <option value="'.$_.'">'.$plrole; |
|
} |
|
if ( keys %customroles > 0) { |
|
foreach (sort keys %customroles) { |
|
my $custrole='cr_cr_'.$ENV{'user.domain'}. |
|
'_'.$ENV{'user.name'}.'_'.$_; |
|
$otheritems .= ' <option value="'.$custrole.'">'.$_; |
|
} |
|
} |
|
$otheritems .= '</select></td><td>'. |
|
'<table border="0" cellspacing="0" cellpadding="0">'. |
|
'<tr><td valign="top"><b>'.$lt{'exs'}.'</b><br /><select name="currsec">'. |
|
' <option value=""><--'.&mt('Pick course first').'</select></td>'. |
|
'<td> </td>'. |
|
'<td valign="top"> <b>'.$lt{'new'}.'</b><br />'. |
|
'<input type="text" name="newsec" value="" /></td>'. |
|
'</tr></table></td>'; |
|
$otheritems .= <<ENDTIMEENTRY; |
|
<td><input type=hidden name="start" value=''> |
|
<a href= |
|
"javascript:pjump('date_start','Start Date',document.cu.start.value,'start','cu.pres','dateset')">$lt{'ssd'}</a></td> |
|
<td><input type=hidden name="end" value=''> |
|
<a href= |
|
"javascript:pjump('date_end','End Date',document.cu.end.value,'end','cu.pres','dateset')">$lt{'sed'}</a></td> |
|
ENDTIMEENTRY |
|
$otheritems .= "</tr></table>\n"; |
|
return $cb_jscript.$header.$hiddenitems.$otheritems; |
|
} |
|
|
#---------------------------------------------- end functions for &phase_two |
#---------------------------------------------- end functions for &phase_two |
|
|
#--------------------------------- functions for &phase_two and &phase_three |
#--------------------------------- functions for &phase_two and &phase_three |