version 1.46, 2008/01/06 05:32:43
|
version 1.55, 2008/05/19 17:10: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 924 sub setup_date_selectors {
|
Line 925 sub setup_date_selectors {
|
|
|
|
|
sub get_dates_from_form { |
sub get_dates_from_form { |
my $startdate = &Apache::lonhtmlcommon::get_date_from_form('startdate'); |
my ($startname,$endname) = @_; |
my $enddate = &Apache::lonhtmlcommon::get_date_from_form('enddate'); |
if ($startname eq '') { |
|
$startname = 'startdate'; |
|
} |
|
if ($endname eq '') { |
|
$endname = 'enddate'; |
|
} |
|
my $startdate = &Apache::lonhtmlcommon::get_date_from_form($startname); |
|
my $enddate = &Apache::lonhtmlcommon::get_date_from_form($endname); |
if ($env{'form.no_end_date'}) { |
if ($env{'form.no_end_date'}) { |
$enddate = 0; |
$enddate = 0; |
} |
} |
Line 1251 sub print_userlist {
|
Line 1259 sub print_userlist {
|
if ($env{'form.showrole'} eq 'Any') { |
if ($env{'form.showrole'} eq 'Any') { |
$roleselected = ' selected="selected" '; |
$roleselected = ' selected="selected" '; |
} |
} |
my ($role_select,$cnum,$cdom); |
my ($cnum,$cdom); |
if ($context eq 'domain') { |
$r->print(&role_filter($context)); |
$role_select = &domain_roles_select(); |
if ($context eq 'course') { |
$r->print('<label>'.&mt('Role Type: [_1]',$role_select).'</label>'); |
($cnum,$cdom) = &get_course_identity(); |
} else { |
$r->print(§ion_group_filter($cnum,$cdom)); |
$role_select = '<select name="showrole">'."\n". |
|
'<option value="Any" '.$roleselected.'>'. |
|
&mt('Any role').'</option>'; |
|
my @poss_roles = &curr_role_permissions($context); |
|
foreach my $role (@poss_roles) { |
|
$roleselected = ''; |
|
if ($role eq $env{'form.showrole'}) { |
|
$roleselected = ' selected="selected" '; |
|
} |
|
my $plrole; |
|
if ($role eq 'cr') { |
|
$plrole = &mt('Custom role'); |
|
} else { |
|
$plrole=&Apache::lonnet::plaintext($role); |
|
} |
|
$role_select .= '<option value="'.$role.'"'.$roleselected.'>'.$plrole.'</option>'; |
|
} |
|
$role_select .= '</select>'; |
|
$r->print('<label>'.&mt('Role: [_1]',$role_select).'</label>'); |
|
if ($context eq 'course') { |
|
($cnum,$cdom) = &get_course_identity(); |
|
$r->print(§ion_group_filter($cnum,$cdom)); |
|
} |
|
} |
} |
if (!(($context eq 'domain') && ($env{'form.roletype'} eq 'course'))) { |
if (!(($context eq 'domain') && ($env{'form.roletype'} eq 'course'))) { |
$r->print(' '.&list_submit_button(&mt('Update Display')). |
$r->print(' '.&list_submit_button(&mt('Update Display')). |
Line 1450 sub print_userlist {
|
Line 1435 sub print_userlist {
|
$env{'form.phase'}.'" /></form>'); |
$env{'form.phase'}.'" /></form>'); |
} |
} |
|
|
|
sub role_filter { |
|
my ($context) = @_; |
|
my $output; |
|
my $roleselected = ''; |
|
if ($env{'form.showrole'} eq 'Any') { |
|
$roleselected = ' selected="selected" '; |
|
} |
|
my ($role_select); |
|
if ($context eq 'domain') { |
|
$role_select = &domain_roles_select(); |
|
$output = '<label>'.&mt('Role Type: [_1]',$role_select).'</label>'; |
|
} else { |
|
$role_select = '<select name="showrole">'."\n". |
|
'<option value="Any" '.$roleselected.'>'. |
|
&mt('Any role').'</option>'; |
|
my @poss_roles = &curr_role_permissions($context); |
|
foreach my $role (@poss_roles) { |
|
$roleselected = ''; |
|
if ($role eq $env{'form.showrole'}) { |
|
$roleselected = ' selected="selected" '; |
|
} |
|
my $plrole; |
|
if ($role eq 'cr') { |
|
$plrole = &mt('Custom role'); |
|
} else { |
|
$plrole=&Apache::lonnet::plaintext($role); |
|
} |
|
$role_select .= '<option value="'.$role.'"'.$roleselected.'>'.$plrole.'</option>'; |
|
} |
|
$role_select .= '</select>'; |
|
$output = '<label>'.&mt('Role: [_1]',$role_select).'</label>'; |
|
} |
|
return $output; |
|
} |
|
|
sub section_group_filter { |
sub section_group_filter { |
my ($cnum,$cdom) = @_; |
my ($cnum,$cdom) = @_; |
my @filters; |
my @filters; |
Line 1467 sub section_group_filter {
|
Line 1487 sub section_group_filter {
|
all => 'all', |
all => 'all', |
none => 'none', |
none => 'none', |
); |
); |
my ($output,@options); |
my $output; |
foreach my $item (@filters) { |
foreach my $item (@filters) { |
my $markup; |
my ($markup,@options); |
if ($env{'form.'.$name{$item}} eq '') { |
if ($env{'form.'.$name{$item}} eq '') { |
$env{'form.'.$name{$item}} = 'all'; |
$env{'form.'.$name{$item}} = 'all'; |
} |
} |
Line 1513 sub list_submit_button {
|
Line 1533 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 1546 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 1791 sub make_keylist_array {
|
Line 1814 sub make_keylist_array {
|
$index->{'role'} = &Apache::loncoursedata::CL_ROLE(); |
$index->{'role'} = &Apache::loncoursedata::CL_ROLE(); |
$index->{'extent'} = &Apache::loncoursedata::CL_EXTENT(); |
$index->{'extent'} = &Apache::loncoursedata::CL_EXTENT(); |
$index->{'photo'} = &Apache::loncoursedata::CL_PHOTO(); |
$index->{'photo'} = &Apache::loncoursedata::CL_PHOTO(); |
|
$index->{'thumbnail'} = &Apache::loncoursedata::CL_THUMBNAIL(); |
foreach my $key (keys(%{$index})) { |
foreach my $key (keys(%{$index})) { |
$keylist->[$index->{$key}] = $key; |
$keylist->[$index->{$key}] = $key; |
} |
} |
Line 1839 sub process_date_info {
|
Line 1863 sub process_date_info {
|
} |
} |
|
|
sub show_users_list { |
sub show_users_list { |
my ($r,$context,$mode,$permission,$statusmode,$userlist,$keylist)=@_; |
my ($r,$context,$mode,$permission,$statusmode,$userlist,$keylist,$formname)=@_; |
|
if ($formname eq '') { |
|
$formname = 'studentform'; |
|
} |
# |
# |
# Variables for excel output |
# Variables for excel output |
my ($excel_workbook, $excel_sheet, $excel_filename,$row,$format); |
my ($excel_workbook, $excel_sheet, $excel_filename,$row,$format); |
Line 1854 sub show_users_list {
|
Line 1881 sub show_users_list {
|
} else { |
} else { |
push(@sortable,'extent'); |
push(@sortable,'extent'); |
} |
} |
|
if ($mode eq 'pickauthor') { |
|
@sortable = ('username','fullname','email','status'); |
|
} |
if (!grep(/^\Q$sortby\E$/,@sortable)) { |
if (!grep(/^\Q$sortby\E$/,@sortable)) { |
$sortby = 'username'; |
$sortby = 'username'; |
} |
} |
Line 1894 function photowindow(photolink) {
|
Line 1924 function photowindow(photolink) {
|
END |
END |
} |
} |
} |
} |
if ($mode ne 'autoenroll') { |
if ($mode ne 'autoenroll' && $mode ne 'pickauthor') { |
my $check_uncheck_js = &Apache::loncommon::check_uncheck_jscript(); |
my $check_uncheck_js = &Apache::loncommon::check_uncheck_jscript(); |
my $alert = &mt("You must select at least one user by checking a user's 'Select' checkbox"); |
my $alert = &mt("You must select at least one user by checking a user's 'Select' checkbox"); |
my $singconfirm = &mt(' for a single user?'); |
my $singconfirm = &mt(' for a single user?'); |
Line 1936 function verify_action (field) {
|
Line 1966 function verify_action (field) {
|
alert("$alert"); |
alert("$alert"); |
} |
} |
else { |
else { |
var message = document.studentform.bulkaction[document.studentform.bulkaction.selectedIndex].text; |
var message = document.$formname.bulkaction[document.$formname.bulkaction.selectedIndex].text; |
var choice = document.studentform.bulkaction[document.studentform.bulkaction.selectedIndex].value; |
var choice = document.$formname.bulkaction[document.$formname.bulkaction.selectedIndex].value; |
if (numchecked == 1) { |
if (numchecked == 1) { |
message += singconf; |
message += singconf; |
} |
} |
Line 1946 function verify_action (field) {
|
Line 1976 function verify_action (field) {
|
} |
} |
if (choice == 'chgdates' || choice == 'reenable' || choice == 'activate') { |
if (choice == 'chgdates' || choice == 'reenable' || choice == 'activate') { |
var datemsg = ''; |
var datemsg = ''; |
if ((document.studentform.startdate_month.value == '') && |
if ((document.$formname.startdate_month.value == '') && |
(document.studentform.startdate_day.value == '') && |
(document.$formname.startdate_day.value == '') && |
(document.studentform.startdate_year.value == '')) { |
(document.$formname.startdate_year.value == '')) { |
datemsg = "\\n$lt{'acwi'},\\n$lt{'asyo'}.\\n"; |
datemsg = "\\n$lt{'acwi'},\\n$lt{'asyo'}.\\n"; |
} |
} |
if ((document.studentform.enddate_month.value == '') && |
if ((document.$formname.enddate_month.value == '') && |
(document.studentform.enddate_day.value == '') && |
(document.$formname.enddate_day.value == '') && |
(document.studentform.enddate_year.value == '')) { |
(document.$formname.enddate_year.value == '')) { |
datemsg += "\\n$lt{'accw'},\\n$lt{'asyd'}.\\n"; |
datemsg += "\\n$lt{'accw'},\\n$lt{'asyd'}.\\n"; |
} |
} |
if (datemsg != '') { |
if (datemsg != '') { |
Line 1961 function verify_action (field) {
|
Line 1991 function verify_action (field) {
|
} |
} |
} |
} |
if (choice == 'chgsec') { |
if (choice == 'chgsec') { |
var rolefilter = document.studentform.showrole.options[document.studentform.showrole.selectedIndex].value; |
var rolefilter = document.$formname.showrole.options[document.$formname.showrole.selectedIndex].value; |
var retained = document.studentform.retainsec.value; |
var retained = document.$formname.retainsec.value; |
var secshow = document.studentform.newsecs.value; |
var secshow = document.$formname.newsecs.value; |
if (secshow == '') { |
if (secshow == '') { |
if (rolefilter == 'st' || retained == 0 || retained == "") { |
if (rolefilter == 'st' || retained == 0 || retained == "") { |
message += "\\n\\n$lt{'sewi'},\\n$lt{'ayes'},\\n$lt{'oryo'}.\\n"; |
message += "\\n\\n$lt{'sewi'},\\n$lt{'ayes'},\\n$lt{'oryo'}.\\n"; |
Line 1979 function verify_action (field) {
|
Line 2009 function verify_action (field) {
|
} |
} |
} |
} |
if (confirm(message)) { |
if (confirm(message)) { |
document.studentform.phase.value = 'bulkchange'; |
document.$formname.phase.value = 'bulkchange'; |
document.studentform.submit(); |
document.$formname.submit(); |
} |
} |
} |
} |
} |
} |
|
|
function username_display_launch(username,domain) { |
function username_display_launch(username,domain) { |
var target; |
var target; |
for (var i=0; i<document.studentform.usernamelink.length; i++) { |
for (var i=0; i<document.$formname.usernamelink.length; i++) { |
if (document.studentform.usernamelink[i].checked) { |
if (document.$formname.usernamelink[i].checked) { |
target = document.studentform.usernamelink[i].value; |
target = document.$formname.usernamelink[i].value; |
} |
} |
} |
} |
if (target == 'modify') { |
if (target == 'modify') { |
document.studentform.srchterm.value=username; |
if (document.$formname.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.$formname.srchterm.value=username; |
|
document.$formname.srchdomain.value=domain; |
|
document.$formname.phase.value='get_user_info'; |
|
document.$formname.action.value = 'singleuser'; |
|
document.$formname.submit(); |
|
} |
} |
} |
else { |
if (target == 'aboutme') { |
document.location.href = '/adm/'+domain+'/'+username+'/aboutme'; |
if (document.$formname.userwin.checked == true) { |
|
var url = '/adm/'+domain+'/'+username+'/aboutme?popup=1'; |
|
var options = 'height=600,width=800,resizable=yes,scrollbars=yes,location=no,menubar=no,toolbar=no'; |
|
aboutmewin = window.open(url,'',options,1); |
|
aboutmewin.focus(); |
|
return; |
|
} else { |
|
document.location.href = '/adm/'+domain+'/'+username+'/aboutme'; |
|
} |
} |
} |
} |
} |
</script> |
</script> |
Line 2035 END
|
Line 2081 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", |
|
'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 2042 END
|
Line 2089 END
|
} elsif ($context eq 'author') { |
} elsif ($context eq 'author') { |
$lt{'extent'} = &mt('Author'); |
$lt{'extent'} = &mt('Author'); |
} |
} |
my @cols = ('username','domain','id','fullname'); |
my @cols; |
if ($context eq 'course') { |
if ($mode eq 'pickauthor') { |
push(@cols,'section'); |
@cols = ('username','fullname','status','email'); |
} |
} else { |
if (!($context eq 'domain' && $env{'form.roletype'} eq 'course')) { |
@cols = ('username','domain','id','fullname'); |
push(@cols,('start','end')); |
if ($context eq 'course') { |
} |
push(@cols,'section'); |
if ($env{'form.showrole'} eq 'Any' || $env{'form.showrole'} eq 'cr') { |
} |
push(@cols,'role'); |
if (!($context eq 'domain' && $env{'form.roletype'} eq 'course')) { |
} |
push(@cols,('start','end')); |
if ($context eq 'domain' && ($env{'form.roletype'} eq 'author' || |
} |
$env{'form.roletype'} eq 'course')) { |
if ($env{'form.showrole'} eq 'Any' || $env{'form.showrole'} eq 'cr') { |
push (@cols,'extent'); |
push(@cols,'role'); |
} |
} |
if (($statusmode eq 'Any') && |
if ($context eq 'domain' && ($env{'form.roletype'} eq 'author' || |
(!($context eq 'domain' && $env{'form.roletype'} eq 'course'))) { |
$env{'form.roletype'} eq 'course')) { |
push(@cols,'status'); |
push (@cols,'extent'); |
} |
} |
if ($context eq 'course') { |
if (($statusmode eq 'Any') && |
push(@cols,'groups'); |
(!($context eq 'domain' && $env{'form.roletype'} eq 'course'))) { |
|
push(@cols,'status'); |
|
} |
|
if ($context eq 'course') { |
|
push(@cols,'groups'); |
|
} |
|
push(@cols,'email'); |
} |
} |
push(@cols,'email'); |
|
|
|
my $rolefilter = $env{'form.showrole'}; |
my $rolefilter = $env{'form.showrole'}; |
if ($env{'form.showrole'} eq 'cr') { |
if ($env{'form.showrole'} eq 'cr') { |
Line 2078 END
|
Line 2130 END
|
$r->print('<b>'.$results_description.'</b><br />'); |
$r->print('<b>'.$results_description.'</b><br />'); |
} |
} |
my ($output,$actionselect,%canchange,%canchangesec); |
my ($output,$actionselect,%canchange,%canchangesec); |
if ($mode eq 'html' || $mode eq 'view' || $mode eq 'autoenroll') { |
if ($mode eq 'html' || $mode eq 'view' || $mode eq 'autoenroll' || $mode eq 'pickauthor') { |
if ($mode ne 'autoenroll') { |
if ($mode ne 'autoenroll' && $mode ne 'pickauthor') { |
if ($permission->{'cusr'}) { |
if ($permission->{'cusr'}) { |
$actionselect = &select_actions($context,$setting,$statusmode); |
$actionselect = &select_actions($context,$setting,$statusmode,$formname); |
} |
} |
$r->print(<<END); |
$r->print(<<END); |
<input type="hidden" name="srchby" value="uname" /> |
<input type="hidden" name="srchby" value="uname" /> |
Line 2093 END
|
Line 2145 END
|
$output = '<p>'; |
$output = '<p>'; |
my @linkdests = ('aboutme'); |
my @linkdests = ('aboutme'); |
if ($permission->{'cusr'}) { |
if ($permission->{'cusr'}) { |
push (@linkdests,'modify'); |
unshift (@linkdests,'modify'); |
$output .= '<span class="LC_nobreak">'.$lt{'link'}.': '; |
} |
my $usernamelink = $env{'form.usernamelink'}; |
$output .= '<span class="LC_nobreak">'.$lt{'link'}.': '; |
if ($usernamelink eq '') { |
my $usernamelink = $env{'form.usernamelink'}; |
$usernamelink = 'aboutme'; |
if ($usernamelink eq '') { |
} |
$usernamelink = 'aboutme'; |
foreach my $item (@linkdests) { |
} |
my $checkedstr = ''; |
foreach my $item (@linkdests) { |
if ($item eq $usernamelink) { |
my $checkedstr = ''; |
$checkedstr = ' checked="checked" '; |
if ($item eq $usernamelink) { |
} |
$checkedstr = ' checked="checked" '; |
$output .= '<label><input type="radio" name="usernamelink" value="'.$item.'"'.$checkedstr.'> '.$lt{$item}.'</label> '; |
|
} |
} |
$output .= '</span><br />'; |
$output .= '<label><input type="radio" name="usernamelink" value="'.$item.'"'.$checkedstr.'> '.$lt{$item}.'</label> '; |
} else { |
} |
$output .= &mt("Click on a username to view the user's personal page.").'<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,'$formname','go')" /></p> |
<p><input type="button" value="$lt{'ca'}" onclick="javascript:checkAll(document.studentform.actionlist)" /> |
<p><input type="button" value="$lt{'ca'}" onclick="javascript:checkAll(document.$formname.actionlist)" /> |
<input type="button" value="$lt{'ua'}" onclick="javascript:uncheckAll(document.studentform.actionlist)" /><br /><br /><input type="button" value="$lt{'pr'}" onclick="javascript:verify_action(document.studentform.actionlist)" /> |
<input type="button" value="$lt{'ua'}" onclick="javascript:uncheckAll(document.$formname.actionlist)" /><br /><br /><input type="button" value="$lt{'pr'}" onclick="javascript:verify_action(document.$formname.actionlist)" /> |
END |
END |
my @allroles; |
my @allroles; |
if ($env{'form.showrole'} eq 'Any') { |
if ($env{'form.showrole'} eq 'Any') { |
Line 2162 END
|
Line 2216 END
|
&Apache::loncommon::start_data_table_header_row(); |
&Apache::loncommon::start_data_table_header_row(); |
if ($mode eq 'autoenroll') { |
if ($mode eq 'autoenroll') { |
$output .= " |
$output .= " |
<th><a href=\"javascript:document.studentform.sortby.value='type';document.studentform.submit();\">$lt{'type'}</a></th> |
<th><a href=\"javascript:document.$formname.sortby.value='type';document.$formname.submit();\">$lt{'type'}</a></th> |
"; |
"; |
} else { |
} else { |
$output .= "\n".'<th>'.&mt('Count').'</th>'."\n"; |
if ($mode eq 'pickauthor') { |
|
$output .= "\n".'<th> </th>'."\n"; |
|
} else { |
|
$output .= "\n".'<th>'.&mt('Count').'</th>'."\n"; |
|
} |
if ($actionselect) { |
if ($actionselect) { |
$output .= '<th>'.&mt('Select').'</th>'."\n"; |
$output .= '<th>'.&mt('Select').'</th>'."\n"; |
} |
} |
} |
} |
foreach my $item (@cols) { |
foreach my $item (@cols) { |
$output .= "<th><a href=\"javascript:document.studentform.sortby.value='$item';document.studentform.submit();\">$lt{$item}</a></th>\n"; |
$output .= "<th><a href=\"javascript:document.$formname.sortby.value='$item';document.$formname.submit();\">$lt{$item}</a></th>\n"; |
} |
} |
my %role_types = &role_type_names(); |
my %role_types = &role_type_names(); |
if ($context eq 'course' && $mode ne 'autoenroll') { |
if ($context eq 'course' && $mode ne 'autoenroll') { |
Line 2186 END
|
Line 2244 END
|
$clickerchg = 'off'; |
$clickerchg = 'off'; |
} |
} |
$output .= ' <th>'."\n".' '. |
$output .= ' <th>'."\n".' '. |
'<a href="javascript:document.studentform.displayclickers.value='. |
'<a href="javascript:document.'.$formname.'.displayclickers.value='. |
"'".$clickerchg."'".';document.studentform.submit();">'. |
"'".$clickerchg."'".';document.'.$formname.'.submit();">'. |
$clicker_options{$clickerchg}.'</a> '.$lt{'clicker'}."\n". |
$clicker_options{$clickerchg}.'</a> '.$lt{'clicker'}."\n". |
' </th>'."\n"; |
' </th>'."\n"; |
|
|
Line 2202 END
|
Line 2260 END
|
$photochg = 'off'; |
$photochg = 'off'; |
} |
} |
$output .= ' <th>'."\n".' '. |
$output .= ' <th>'."\n".' '. |
'<a href="javascript:document.studentform.displayphotos.value='. |
'<a href="javascript:document.'.$formname.'.displayphotos.value='. |
"'".$photochg."'".';document.studentform.submit();">'. |
"'".$photochg."'".';document.'.$formname.'.submit();">'. |
$photo_options{$photochg}.'</a> '.$lt{'photo'}."\n". |
$photo_options{$photochg}.'</a> '.$lt{'photo'}."\n". |
' </th>'."\n"; |
' </th>'."\n"; |
} |
} |
Line 2243 END
|
Line 2301 END
|
} |
} |
|
|
# Done with header lines in all formats |
# Done with header lines in all formats |
|
|
my %index; |
my %index; |
my $i; |
my $i; |
foreach my $idx (@$keylist) { |
foreach my $idx (@$keylist) { |
Line 2345 END
|
Line 2402 END
|
if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) { |
if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) { |
if (($displayphotos eq 'on') && ($role eq 'st')) { |
if (($displayphotos eq 'on') && ($role eq 'st')) { |
$userlist->{$user}->[$index{'photo'}] = |
$userlist->{$user}->[$index{'photo'}] = |
|
&Apache::lonnet::retrievestudentphoto($udom,$uname,'jpg'); |
|
$userlist->{$user}->[$index{'thumbnail'}] = |
&Apache::lonnet::retrievestudentphoto($udom,$uname, |
&Apache::lonnet::retrievestudentphoto($udom,$uname, |
'gif','thumbnail'); |
'gif','thumbnail'); |
} |
} |
Line 2401 END
|
Line 2460 END
|
} else { |
} else { |
$in{'end'} = &Apache::lonlocal::locallocaltime($in{'end'}); |
$in{'end'} = &Apache::lonlocal::locallocaltime($in{'end'}); |
} |
} |
if ($mode eq 'view' || $mode eq 'html' || $mode eq 'autoenroll') { |
if ($mode eq 'view' || $mode eq 'html' || $mode eq 'autoenroll' || $mode eq 'pickauthor') { |
$r->print(&Apache::loncommon::start_data_table_row()); |
$r->print(&Apache::loncommon::start_data_table_row()); |
my $checkval; |
my $checkval; |
if ($mode eq 'autoenroll') { |
if ($mode eq 'autoenroll') { |
Line 2423 END
|
Line 2482 END
|
} |
} |
$r->print("<td>$cellentry</td>\n"); |
$r->print("<td>$cellentry</td>\n"); |
} else { |
} else { |
$r->print("<td>$rowcount</td>\n"); |
if ($mode ne 'pickauthor') { |
|
$r->print("<td>$rowcount</td>\n"); |
|
} |
if ($actionselect) { |
if ($actionselect) { |
my $showcheckbox; |
my $showcheckbox; |
if ($role =~ /^cr\//) { |
if ($role =~ /^cr\//) { |
Line 2457 END
|
Line 2518 END
|
} else { |
} else { |
$r->print('<td> </td>'); |
$r->print('<td> </td>'); |
} |
} |
|
} elsif ($mode eq 'pickauthor') { |
|
$r->print('<td><input type="button" name="chooseauthor" onclick="javascript:gochoose('."'$in{'username'}'".');" value="'.&mt('Select').'" /></td>'); |
} |
} |
} |
} |
foreach my $item (@cols) { |
foreach my $item (@cols) { |
if ($item eq 'username') { |
if ($item eq 'username') { |
$r->print('<td>'.&print_username_link($mode,$permission, |
$r->print('<td>'.&print_username_link($mode,\%in).'</td>'); |
\%in).'</td>'); |
|
} elsif (($item eq 'start' || $item eq 'end') && ($actionselect)) { |
} elsif (($item eq 'start' || $item eq 'end') && ($actionselect)) { |
$r->print('<td>'.$in{$item}.'<input type="hidden" name="'.$checkval.'_'.$item.'" value="'.$sdata->[$index{$item}].'" /></td>'."\n"); |
$r->print('<td>'.$in{$item}.'<input type="hidden" name="'.$checkval.'_'.$item.'" value="'.$sdata->[$index{$item}].'" /></td>'."\n"); |
} else { |
} else { |
Line 2481 END
|
Line 2543 END
|
} |
} |
if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) { |
if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) { |
if ($displayphotos eq 'on' && $role eq 'st' && $in{'photo'} ne '') { |
if ($displayphotos eq 'on' && $role eq 'st' && $in{'photo'} ne '') { |
$r->print(' <td align="right"><a href="javascript:photowindow('."'".&Apache::lonnet::studentphoto($in{'domain'},$in{'username'},'jpg')."'".')"><img src="'.$in{'photo'}.'" border="1"></a></td>'); |
$r->print(' <td align="right"><a href="javascript:photowindow('."'".$in{'photo'}."'".')"><img src="'.$in{'thumbnail'}.'" border="1"></a></td>'); |
} else { |
} else { |
$r->print(' <td> </td> '); |
$r->print(' <td> </td> '); |
} |
} |
Line 2525 END
|
Line 2587 END
|
$row++; |
$row++; |
} |
} |
} |
} |
if ($mode eq 'view' || $mode eq 'html' || $mode eq 'autoenroll') { |
if ($mode eq 'view' || $mode eq 'html' || $mode eq 'autoenroll' || $mode eq 'pickauthor') { |
$r->print(&Apache::loncommon::end_data_table().'<br />'); |
$r->print(&Apache::loncommon::end_data_table().'<br />'); |
} elsif ($mode eq 'excel') { |
} elsif ($mode eq 'excel') { |
$excel_workbook->close(); |
$excel_workbook->close(); |
Line 2546 END
|
Line 2608 END
|
} |
} |
|
|
sub print_username_link { |
sub print_username_link { |
my ($mode,$permission,$in) = @_; |
my ($mode,$in) = @_; |
my $output; |
my $output; |
if ($mode eq 'autoenroll') { |
if ($mode eq 'autoenroll') { |
$output = $in->{'username'}; |
$output = $in->{'username'}; |
} elsif (!$permission->{'cusr'}) { |
|
$output = &Apache::loncommon::aboutmewrapper($in->{'username'}, |
|
$in->{'username'}, |
|
$in->{'domain'}); |
|
} else { |
} else { |
$output = '<a href="javascript:username_display_launch('. |
$output = '<a href="javascript:username_display_launch('. |
"'$in->{'username'}','$in->{'domain'}'".')" />'. |
"'$in->{'username'}','$in->{'domain'}'".')" />'. |
Line 2572 sub role_type_names {
|
Line 2630 sub role_type_names {
|
} |
} |
|
|
sub select_actions { |
sub select_actions { |
my ($context,$setting,$statusmode) = @_; |
my ($context,$setting,$statusmode,$formname) = @_; |
my %lt = &Apache::lonlocal::texthash( |
my %lt = &Apache::lonlocal::texthash( |
revoke => "Revoke user roles", |
revoke => "Revoke user roles", |
delete => "Delete user roles", |
delete => "Delete user roles", |
Line 2633 sub select_actions {
|
Line 2691 sub select_actions {
|
} |
} |
} |
} |
if ($options) { |
if ($options) { |
$output = '<select name="bulkaction" onchange="javascript:opendatebrowser(this.form,'."'studentform','change'".')" />'."\n". |
$output = '<select name="bulkaction" onchange="javascript:opendatebrowser(this.form,'."'$formname','change'".')" />'."\n". |
'<option value="" selected="selected">'. |
'<option value="" selected="selected">'. |
&mt('Please select').'</option>'."\n".$options."\n".'</select>'; |
&mt('Please select').'</option>'."\n".$options."\n".'</select>'; |
if ($choices{'dates'}) { |
if ($choices{'dates'}) { |
Line 2664 sub select_actions {
|
Line 2722 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 3647 sub upfile_drop_add {
|
Line 3699 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 3959 sub update_user_list {
|
Line 4012 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 3985 sub update_user_list {
|
Line 4039 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 4019 sub update_user_list {
|
Line 4073 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 4028 sub update_user_list {
|
Line 4083 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 4048 sub update_user_list {
|
Line 4105 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 4197 sub set_login {
|
Line 4254 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 4215 sub course_sections {
|
Line 4284 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>'; |