version 1.48, 2008/01/17 00:14:49
|
version 1.52, 2008/04/30 23:16:19
|
Line 42 use LONCAPA qw(:DEFAULT :match);
|
Line 42 use LONCAPA qw(:DEFAULT :match);
|
############################################################### |
############################################################### |
# Drop student from all sections of a course, except optional $csec |
# Drop student from all sections of a course, except optional $csec |
sub modifystudent { |
sub modifystudent { |
my ($udom,$unam,$courseid,$csec,$desiredhost)=@_; |
my ($udom,$unam,$courseid,$csec,$desiredhost,$context)=@_; |
# if $csec is undefined, drop the student from all the courses matching |
# if $csec is undefined, drop the student from all the courses matching |
# this one. If $csec is defined, drop them from all other sections of |
# this one. If $csec is defined, drop them from all other sections of |
# this course and add them to section $csec |
# this course and add them to section $csec |
Line 69 sub modifystudent {
|
Line 69 sub modifystudent {
|
# dom name id mode pass f m l g |
# dom name id mode pass f m l g |
($udom,$unam,'', '', '',undef,undef,undef,undef, |
($udom,$unam,'', '', '',undef,undef,undef,undef, |
$section,time,undef,undef,$desiredhost,'','manual', |
$section,time,undef,undef,$desiredhost,'','manual', |
'',$courseid); |
'',$courseid,'',$context); |
$result .= $reply.':'; |
$result .= $reply.':'; |
} |
} |
} |
} |
Line 129 sub modifyuserrole {
|
Line 129 sub modifyuserrole {
|
if ($role ne '') { |
if ($role ne '') { |
$role =~ s/_/\//g; |
$role =~ s/_/\//g; |
$roleresult = &Apache::lonnet::assignrole($udom,$uname,$scope, |
$roleresult = &Apache::lonnet::assignrole($udom,$uname,$scope, |
$role,$end,$start); |
$role,$end,$start,'', |
|
'',$context); |
} |
} |
} |
} |
return ($userresult,$authresult,$roleresult,$idresult); |
return ($userresult,$authresult,$roleresult,$idresult); |
Line 1513 sub list_submit_button {
|
Line 1514 sub list_submit_button {
|
|
|
sub gather_userinfo { |
sub gather_userinfo { |
my ($context,$format,$userlist,$indexhash,$userinfo,$rolehash,$permission) = @_; |
my ($context,$format,$userlist,$indexhash,$userinfo,$rolehash,$permission) = @_; |
|
my $viewablesec; |
|
if ($context eq 'course') { |
|
$viewablesec = &viewable_section($permission); |
|
} |
foreach my $item (keys(%{$rolehash})) { |
foreach my $item (keys(%{$rolehash})) { |
my %userdata; |
my %userdata; |
if ($context eq 'author') { |
if ($context eq 'author') { |
Line 1522 sub gather_userinfo {
|
Line 1527 sub gather_userinfo {
|
&build_user_record($context,\%userdata,$userinfo,$indexhash, |
&build_user_record($context,\%userdata,$userinfo,$indexhash, |
$item,$userlist); |
$item,$userlist); |
} elsif ($context eq 'course') { |
} elsif ($context eq 'course') { |
my $viewablesec = &viewable_section($permission); |
|
($userdata{'username'},$userdata{'domain'},$userdata{'role'}, |
($userdata{'username'},$userdata{'domain'},$userdata{'role'}, |
$userdata{'section'}) = split(/:/,$item,-1); |
$userdata{'section'}) = split(/:/,$item,-1); |
($userdata{'start'},$userdata{'end'})=split(/:/,$rolehash->{$item}); |
($userdata{'start'},$userdata{'end'})=split(/:/,$rolehash->{$item}); |
Line 1994 function username_display_launch(usernam
|
Line 1998 function username_display_launch(usernam
|
} |
} |
} |
} |
if (target == 'modify') { |
if (target == 'modify') { |
document.studentform.srchterm.value=username; |
if (document.studentform.userwin.checked == true) { |
document.studentform.srchdomain.value=domain; |
var url = '/adm/createuser?srchterm='+username+'&srchdomain='+domain+'&phase=get_user_info&action=singleuser&srchin=dom&srchby=uname&srchtype=exact&popup=1'; |
document.studentform.phase.value='get_user_info'; |
var options = 'height=600,width=800,resizable=yes,scrollbars=yes,location=no,menubar=no,toolbar=no'; |
document.studentform.action.value = 'singleuser'; |
modifywin = window.open(url,'',options,1); |
document.studentform.submit(); |
modifywin.focus(); |
|
return; |
|
} else { |
|
document.studentform.srchterm.value=username; |
|
document.studentform.srchdomain.value=domain; |
|
document.studentform.phase.value='get_user_info'; |
|
document.studentform.action.value = 'singleuser'; |
|
document.studentform.submit(); |
|
} |
} |
} |
if (target == 'aboutme') { |
if (target == 'aboutme') { |
document.location.href = '/adm/'+domain+'/'+username+'/aboutme'; |
if (document.studentform.userwin.checked == true) { |
} |
var url = '/adm/'+domain+'/'+username+'/aboutme?popup=1'; |
if (target == 'aboutmewin') { |
var options = 'height=600,width=800,resizable=yes,scrollbars=yes,location=no,menubar=no,toolbar=no'; |
var url = '/adm/'+domain+'/'+username+'/aboutme'; |
aboutmewin = window.open(url,'',options,1); |
var options = 'height=600,width=800,resizable=yes,scrollbars=yes,location=no,menubar=no,toolbar=no'; |
aboutmewin.focus(); |
aboutmewin = window.open(url,'',options,1); |
return; |
|
} else { |
|
document.location.href = '/adm/'+domain+'/'+username+'/aboutme'; |
|
} |
} |
} |
} |
} |
</script> |
</script> |
Line 2041 END
|
Line 2056 END
|
'ac' => "Action to take for selected users", |
'ac' => "Action to take for selected users", |
'link' => "Behavior of username links", |
'link' => "Behavior of username links", |
'aboutme' => "Display a user's personal page", |
'aboutme' => "Display a user's personal page", |
'aboutmewin' => "Display a user's personal page in a new window", |
'owin' => "Open in a new window", |
'modify' => "Modify a user's information", |
'modify' => "Modify a user's information", |
); |
); |
if ($context eq 'domain' && $env{'form.roletype'} eq 'course') { |
if ($context eq 'domain' && $env{'form.roletype'} eq 'course') { |
Line 2098 END
|
Line 2113 END
|
<input type="hidden" name="srchdomain" value="" /> |
<input type="hidden" name="srchdomain" value="" /> |
END |
END |
$output = '<p>'; |
$output = '<p>'; |
my @linkdests = ('aboutme','aboutmewin'); |
my @linkdests = ('aboutme'); |
if ($permission->{'cusr'}) { |
if ($permission->{'cusr'}) { |
unshift (@linkdests,'modify'); |
unshift (@linkdests,'modify'); |
} |
} |
Line 2114 END
|
Line 2129 END
|
} |
} |
$output .= '<label><input type="radio" name="usernamelink" value="'.$item.'"'.$checkedstr.'> '.$lt{$item}.'</label> '; |
$output .= '<label><input type="radio" name="usernamelink" value="'.$item.'"'.$checkedstr.'> '.$lt{$item}.'</label> '; |
} |
} |
$output .= '</span><br />'; |
my $checkwin; |
|
if ($env{'form.userwin'}) { |
|
$checkwin = 'checked = "checked"'; |
|
} |
|
$output .= ' <input type="checkbox" name="userwin" value="1" $checkwin />'.$lt{'owin'}.'</span><br />'; |
if ($actionselect) { |
if ($actionselect) { |
$output .= <<"END"; |
$output .= <<"END"; |
$lt{'ac'}: $actionselect <input type="button" value="$lt{'go'}" onclick="javascript:opendatebrowser(this.form,'studentform','go')" /></p> |
$lt{'ac'}: $actionselect <input type="button" value="$lt{'go'}" onclick="javascript:opendatebrowser(this.form,'studentform','go')" /></p> |
Line 2665 sub select_actions {
|
Line 2684 sub select_actions {
|
|
|
sub date_section_javascript { |
sub date_section_javascript { |
my ($context,$setting) = @_; |
my ($context,$setting) = @_; |
my $title; |
my $title = 'Date_And_Section_Selector'; |
if (($context eq 'course') || ($context eq 'domain' && $setting eq 'course')) { |
|
$title = &mt('Date and Section selector'); |
|
} else { |
|
$title = &mt('Date selector'); |
|
} |
|
my %nopopup = &Apache::lonlocal::texthash ( |
my %nopopup = &Apache::lonlocal::texthash ( |
revoke => "Check the boxes for any users for whom roles are to be revoked, and click 'Proceed'", |
revoke => "Check the boxes for any users for whom roles are to be revoked, and click 'Proceed'", |
delete => "Check the boxes for any users for whom roles are to be deleted, and click 'Proceed'", |
delete => "Check the boxes for any users for whom roles are to be deleted, and click 'Proceed'", |
none => "Choose an action to take for selected users", |
none => "Choose an action to take for selected users", |
); |
); |
my $output = ' |
my $output = ' |
<script type="text/javascript"> |
<script type="text/javascript">'."\n"; |
var stdeditbrowser;'."\n"; |
|
$output .= <<"ENDONE"; |
$output .= <<"ENDONE"; |
function opendatebrowser(callingform,formname,calledby) { |
function opendatebrowser(callingform,formname,calledby) { |
var bulkaction = callingform.bulkaction.options[callingform.bulkaction.selectedIndex].value; |
var bulkaction = callingform.bulkaction.options[callingform.bulkaction.selectedIndex].value; |
Line 3648 sub upfile_drop_add {
|
Line 3661 sub upfile_drop_add {
|
$sec = $secs[0]; |
$sec = $secs[0]; |
} |
} |
&modifystudent($domain,$username,$cid,$sec, |
&modifystudent($domain,$username,$cid,$sec, |
$desiredhost); |
$desiredhost,$context); |
$roleresult = |
$roleresult = |
&Apache::lonnet::modifystudent |
&Apache::lonnet::modifystudent |
($domain,$username,$id,$amode,$password, |
($domain,$username,$id,$amode,$password, |
$fname,$mname,$lname,$gen,$sec,$enddate, |
$fname,$mname,$lname,$gen,$sec,$enddate, |
$startdate,$env{'form.forceid'}, |
$startdate,$env{'form.forceid'}, |
$desiredhost,$email,'manual','',$cid); |
$desiredhost,$email,'manual','',$cid, |
|
'',$context); |
$userresult = $roleresult; |
$userresult = $roleresult; |
} else { |
} else { |
if ($role ne '') { |
if ($role ne '') { |
Line 3960 sub update_user_list {
|
Line 3974 sub update_user_list {
|
$end = $now; |
$end = $now; |
$type = 'manual'; |
$type = 'manual'; |
$result = |
$result = |
&Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,$type,$locktype,$cid); |
&Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,$type,$locktype,$cid,'',$context); |
} elsif ($choice eq 'revoke') { |
} elsif ($choice eq 'revoke') { |
# revoke or delete user role |
# revoke or delete user role |
$end = $now; |
$end = $now; |
if ($role eq 'st') { |
if ($role eq 'st') { |
$result = |
$result = |
&Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,$type,$locktype,$cid); |
&Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,$type,$locktype,$cid,'',$context); |
} else { |
} else { |
$result = |
$result = |
&Apache::lonnet::revokerole($udom,$uname,$scope,$role); |
&Apache::lonnet::revokerole($udom,$uname,$scope,$role, |
|
'','',$context); |
} |
} |
} elsif ($choice eq 'delete') { |
} elsif ($choice eq 'delete') { |
if ($role eq 'st') { |
if ($role eq 'st') { |
&Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$now,$start,$type,$locktype,$cid); |
&Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$now,$start,$type,$locktype,$cid,'',$context); |
} |
} |
$result = |
$result = |
&Apache::lonnet::assignrole($udom,$uname,$scope,$role,$now, |
&Apache::lonnet::assignrole($udom,$uname,$scope,$role,$now, |
$start,1); |
$start,1,'',$context); |
} else { |
} else { |
#reenable, activate, change access dates or change section |
#reenable, activate, change access dates or change section |
if ($choice ne 'chgsec') { |
if ($choice ne 'chgsec') { |
Line 3986 sub update_user_list {
|
Line 4001 sub update_user_list {
|
} |
} |
if ($choice eq 'reenable') { |
if ($choice eq 'reenable') { |
if ($role eq 'st') { |
if ($role eq 'st') { |
$result = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,$type,$locktype,$cid); |
$result = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,$type,$locktype,$cid,'',$context); |
} else { |
} else { |
$result = |
$result = |
&Apache::lonnet::assignrole($udom,$uname,$scope,$role,$end, |
&Apache::lonnet::assignrole($udom,$uname,$scope,$role,$end, |
$now); |
$now,'','',$context); |
} |
} |
} elsif ($choice eq 'activate') { |
} elsif ($choice eq 'activate') { |
if ($role eq 'st') { |
if ($role eq 'st') { |
$result = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,$type,$locktype,$cid); |
$result = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,$type,$locktype,$cid,'',$context); |
} else { |
} else { |
$result = &Apache::lonnet::assignrole($udom,$uname,$scope,$role,$end, |
$result = &Apache::lonnet::assignrole($udom,$uname,$scope,$role,$end, |
$now); |
$now,'','',$context); |
} |
} |
} elsif ($choice eq 'chgdates') { |
} elsif ($choice eq 'chgdates') { |
if ($role eq 'st') { |
if ($role eq 'st') { |
$result = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,$type,$locktype,$cid); |
$result = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,$type,$locktype,$cid,'',$context); |
} else { |
} else { |
$result = &Apache::lonnet::assignrole($udom,$uname,$scope,$role,$end, |
$result = &Apache::lonnet::assignrole($udom,$uname,$scope,$role,$end, |
$start); |
$start,'','',$context); |
} |
} |
} elsif ($choice eq 'chgsec') { |
} elsif ($choice eq 'chgsec') { |
my (@newsecs,$revresult,$nochg,@retained); |
my (@newsecs,$revresult,$nochg,@retained); |
Line 4020 sub update_user_list {
|
Line 4035 sub update_user_list {
|
} else { |
} else { |
$revresult = |
$revresult = |
&Apache::lonnet::revokerole($udom,$uname, |
&Apache::lonnet::revokerole($udom,$uname, |
$scope,$role); |
$scope,$role, |
|
'','',$context); |
} |
} |
} else { |
} else { |
if (@newsecs > 0) { |
if (@newsecs > 0) { |
Line 4029 sub update_user_list {
|
Line 4045 sub update_user_list {
|
} else { |
} else { |
$revresult = |
$revresult = |
&Apache::lonnet::revokerole($udom,$uname, |
&Apache::lonnet::revokerole($udom,$uname, |
$scope,$role); |
$scope,$role, |
|
'','',$context); |
} |
} |
} else { |
} else { |
$revresult = |
$revresult = |
&Apache::lonnet::revokerole($udom,$uname, |
&Apache::lonnet::revokerole($udom,$uname, |
$scope,$role); |
$scope,$role, |
|
'','',$context); |
} |
} |
} |
} |
} else { |
} else { |
Line 4049 sub update_user_list {
|
Line 4067 sub update_user_list {
|
if (!$nochg) { |
if (!$nochg) { |
if ($role eq 'st') { |
if ($role eq 'st') { |
$result = |
$result = |
&Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,undef,$end,$start,$type,$locktype,$cid); |
&Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,undef,$end,$start,$type,$locktype,$cid,'',$context); |
} else { |
} else { |
my $newscope = $scopestem; |
my $newscope = $scopestem; |
$result = &Apache::lonnet::assignrole($udom,$uname,$newscope,$role,$end,$start); |
$result = &Apache::lonnet::assignrole($udom,$uname,$newscope,$role,$end,$start,'','',$context); |
} |
} |
} |
} |
} else { |
} else { |
foreach my $newsec (@newsecs) { |
foreach my $newsec (@newsecs) { |
if (!grep(/^\Q$newsec\E$/,@retained)) { |
if (!grep(/^\Q$newsec\E$/,@retained)) { |
if ($role eq 'st') { |
if ($role eq 'st') { |
$result = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$newsec,$end,$start,$type,$locktype,$cid); |
$result = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$newsec,$end,$start,$type,$locktype,$cid,'',$context); |
} else { |
} else { |
my $newscope = $scopestem; |
my $newscope = $scopestem; |
if ($newsec ne '') { |
if ($newsec ne '') { |
Line 4198 sub set_login {
|
Line 4216 sub set_login {
|
} |
} |
|
|
sub course_sections { |
sub course_sections { |
my ($sections_count,$role) = @_; |
my ($sections_count,$role,$current_sec) = @_; |
my $output = ''; |
my $output = ''; |
my @sections = (sort {$a <=> $b} keys %{$sections_count}); |
my @sections = (sort {$a <=> $b} keys %{$sections_count}); |
my $numsec = scalar(@sections); |
my $numsec = scalar(@sections); |
|
my $is_selected = ' selected="selected" '; |
if ($numsec <= 1) { |
if ($numsec <= 1) { |
$output = '<select name="currsec_'.$role.'" >'."\n". |
$output = '<select name="currsec_'.$role.'" >'."\n". |
' <option value="">'.&mt('Select').'</option>'."\n". |
' <option value="">'.&mt('Select').'</option>'."\n"; |
|
if ($current_sec eq 'none') { |
|
$output .= |
|
' <option value=""'.$is_selected.'>'.&mt('No section').'</option>'."\n"; |
|
} else { |
|
$output .= |
' <option value="">'.&mt('No section').'</option>'."\n"; |
' <option value="">'.&mt('No section').'</option>'."\n"; |
|
} |
if ($numsec == 1) { |
if ($numsec == 1) { |
$output .= |
if ($current_sec eq $sections[0]) { |
|
$output .= |
|
' <option value="'.$sections[0].'"'.$is_selected.'>'.$sections[0].'</option>'."\n"; |
|
} else { |
|
$output .= |
' <option value="'.$sections[0].'" >'.$sections[0].'</option>'."\n"; |
' <option value="'.$sections[0].'" >'.$sections[0].'</option>'."\n"; |
|
} |
} |
} |
} else { |
} else { |
$output = '<select name="currsec_'.$role.'" '; |
$output = '<select name="currsec_'.$role.'" '; |
Line 4216 sub course_sections {
|
Line 4246 sub course_sections {
|
if (scalar(@sections) < 4) { $multiple = scalar(@sections); } |
if (scalar(@sections) < 4) { $multiple = scalar(@sections); } |
if ($role eq 'st') { |
if ($role eq 'st') { |
$output .= '>'."\n". |
$output .= '>'."\n". |
' <option value="">'.&mt('Select').'</option>'."\n". |
' <option value="">'.&mt('Select').'</option>'."\n"; |
|
if ($current_sec eq 'none') { |
|
$output .= |
|
' <option value=""'.$is_selected.'>'.&mt('No section')."</option>\n"; |
|
} else { |
|
$output .= |
' <option value="">'.&mt('No section')."</option>\n"; |
' <option value="">'.&mt('No section')."</option>\n"; |
|
} |
} else { |
} else { |
$output .= 'multiple="multiple" size="'.$multiple.'">'."\n"; |
$output .= 'multiple="multiple" size="'.$multiple.'">'."\n"; |
} |
} |
foreach my $sec (@sections) { |
foreach my $sec (@sections) { |
$output .= '<option value="'.$sec.'">'.$sec."</option>\n"; |
if ($current_sec eq $sec) { |
|
$output .= '<option value="'.$sec.'"'.$is_selected.'>'.$sec."</option>\n"; |
|
} else { |
|
$output .= '<option value="'.$sec.'">'.$sec."</option>\n"; |
|
} |
} |
} |
} |
} |
$output .= '</select>'; |
$output .= '</select>'; |