version 1.93, 2009/05/11 13:07:24
|
version 1.97.2.4, 2010/01/20 17:41:25
|
Line 235 sub domain_roles_select {
|
Line 235 sub domain_roles_select {
|
# domain context |
# domain context |
# |
# |
# Role types |
# Role types |
my @roletypes = ('domain','author','course'); |
my @roletypes = ('domain','author','course','community'); |
|
|
my %lt = &role_type_names(); |
my %lt = &role_type_names(); |
# |
# |
# build up the menu information to be passed to |
# build up the menu information to be passed to |
Line 261 sub domain_roles_select {
|
Line 262 sub domain_roles_select {
|
@roles = &construction_space_roles(); |
@roles = &construction_space_roles(); |
} else { |
} else { |
my $custom = 1; |
my $custom = 1; |
@roles = &course_roles('domain',undef,$custom); |
@roles = &course_roles('domain',undef,$custom,$roletype); |
} |
} |
my $order = ['Any',@roles]; |
my $order = ['Any',@roles]; |
$select_menus{$roletype}->{'order'} = $order; |
$select_menus{$roletype}->{'order'} = $order; |
Line 278 sub domain_roles_select {
|
Line 279 sub domain_roles_select {
|
} |
} |
my $result = &Apache::loncommon::linked_select_forms |
my $result = &Apache::loncommon::linked_select_forms |
('studentform',(' 'x3).&mt('Role: '),$env{'form.roletype'}, |
('studentform',(' 'x3).&mt('Role: '),$env{'form.roletype'}, |
'roletype','showrole',\%select_menus,['domain','author','course']); |
'roletype','showrole',\%select_menus, |
|
['domain','author','course','community']); |
return $result; |
return $result; |
} |
} |
|
|
Line 329 sub print_upload_manager_header {
|
Line 331 sub print_upload_manager_header {
|
$env{'request.role.domain'},$context, |
$env{'request.role.domain'},$context, |
$groupslist); |
$groupslist); |
my $checked=(($env{'form.noFirstLine'})?' checked="checked"':''); |
my $checked=(($env{'form.noFirstLine'})?' checked="checked"':''); |
$r->print(&mt('Total number of records found in file: [_1]','<b>'.$distotal.'</b>'). |
$r->print('<p>' |
"<br />\n"); |
.&mt('Total number of records found in file: [_1]' |
|
,'<b>'.$distotal.'</b>') |
|
."</p>\n"); |
$r->print('<div class="LC_left_float"><h3>'. |
$r->print('<div class="LC_left_float"><h3>'. |
&mt('Identify fields in uploaded list')."</h3>\n"); |
&mt('Identify fields in uploaded list')."</h3>\n"); |
$r->print(&mt('Enter as many fields as you can.<br /> The system will inform you and bring you back to this page, <br /> if the data selected are insufficient to add users.')."<br />\n"); |
$r->print(&mt('Enter as many fields as you can.<br /> The system will inform you and bring you back to this page, <br /> if the data selected are insufficient to add users.')."<br />\n"); |
Line 345 sub print_upload_manager_header {
|
Line 349 sub print_upload_manager_header {
|
&mt('Ignore First Line').'</label><br />'); |
&mt('Ignore First Line').'</label><br />'); |
$r->print('<br /><input type="button" value="'.&mt('Reverse Association').'" '. |
$r->print('<br /><input type="button" value="'.&mt('Reverse Association').'" '. |
'name="Reverse Association" '. |
'name="Reverse Association" '. |
'onClick="javascript:this.form.associate.value=\'Reverse Association\';submit(this.form);" />'); |
'onclick="javascript:this.form.associate.value=\'Reverse Association\';submit(this.form);" />'); |
$r->print("<br /><br />\n". |
$r->print("<br /><br />\n". |
'<script type="text/javascript" language="Javascript">'."\n". |
'<script type="text/javascript" language="Javascript">'."\n". |
$javascript."\n".$javascript_validations.'</script>'); |
'// <![CDATA['."\n". |
|
$javascript."\n".$javascript_validations."\n". |
|
'// ]]>'."\n". |
|
'</script>'); |
} |
} |
|
|
############################################################### |
############################################################### |
Line 738 ENDPICK
|
Line 745 ENDPICK
|
############################################################### |
############################################################### |
############################################################### |
############################################################### |
sub print_upload_manager_footer { |
sub print_upload_manager_footer { |
my ($r,$i,$keyfields,$defdom,$today,$halfyear,$context,$permission) = @_; |
my ($r,$i,$keyfields,$defdom,$today,$halfyear,$context,$permission,$crstype) = @_; |
my $form = 'document.studentform'; |
my $form = 'document.studentform'; |
my $formname = 'studentform'; |
my $formname = 'studentform'; |
my ($krbdef,$krbdefdom) = |
my ($krbdef,$krbdefdom) = |
Line 756 sub print_upload_manager_footer {
|
Line 763 sub print_upload_manager_footer {
|
my $intform = &Apache::loncommon::authform_internal(%param); |
my $intform = &Apache::loncommon::authform_internal(%param); |
my $locform = &Apache::loncommon::authform_local(%param); |
my $locform = &Apache::loncommon::authform_local(%param); |
my $date_table = &date_setting_table(undef,undef,$context,undef, |
my $date_table = &date_setting_table(undef,undef,$context,undef, |
$formname,$permission); |
$formname,$permission,$crstype); |
|
|
my $Str = "\n".'<div class="LC_left_float">'; |
my $Str = "\n".'<div class="LC_left_float">'; |
$Str .= &hidden_input('nfields',$i); |
$Str .= &hidden_input('nfields',$i); |
$Str .= &hidden_input('keyfields',$keyfields); |
$Str .= &hidden_input('keyfields',$keyfields); |
$Str .= "<h3>".&mt('Login Type')."</h3>\n"; |
|
|
$Str .= '<h3>'.&mt('Options').'</h3>' |
|
.&Apache::lonhtmlcommon::start_pick_box(); |
|
|
|
$Str .= &Apache::lonhtmlcommon::row_title(&mt('Login Type')); |
if ($context eq 'domain') { |
if ($context eq 'domain') { |
$Str .= '<p>'.&mt('Change authentication for existing users in domain "[_1]" to these settings?',$defdom).' <span class="LC_nobreak"><label><input type="radio" name="changeauth" value="No" checked="checked" />'.&mt('No').'</label> <label><input type="radio" name="changeauth" value="Yes" />'.&mt('Yes').'</label></span></p>'; |
$Str .= '<p>' |
|
.&mt('Change authentication for existing users in domain "[_1]" to these settings?' |
|
,$defdom) |
|
.' <span class="LC_nobreak"><label>' |
|
.'<input type="radio" name="changeauth" value="No" checked="checked" />' |
|
.&mt('No').'</label>' |
|
.' <label>' |
|
.'<input type="radio" name="changeauth" value="Yes" />' |
|
.&mt('Yes').'</label>' |
|
.'</span></p>'; |
} else { |
} else { |
$Str .= "<p>\n". |
$Str .= '<p class="LC_info">'."\n". |
&mt('Note: This will not take effect if the user already exists.'). |
&mt('This will not take effect if the user already exists.'). |
&Apache::loncommon::help_open_topic('Auth_Options'). |
&Apache::loncommon::help_open_topic('Auth_Options'). |
"</p>\n"; |
"</p>\n"; |
} |
} |
$Str .= &set_login($defdom,$krbform,$intform,$locform); |
$Str .= &set_login($defdom,$krbform,$intform,$locform); |
|
|
my ($home_server_pick,$numlib) = |
my ($home_server_pick,$numlib) = |
&Apache::loncommon::home_server_form_item($defdom,'lcserver', |
&Apache::loncommon::home_server_form_item($defdom,'lcserver', |
'default','hide'); |
'default','hide'); |
if ($numlib > 1) { |
if ($numlib > 1) { |
$Str .= '<h3>'.&mt('LON-CAPA Home Server for New Users')."</h3>\n". |
$Str .= &Apache::lonhtmlcommon::row_closure() |
&mt('LON-CAPA domain: [_1] with home server: [_2]',$defdom, |
.&Apache::lonhtmlcommon::row_title( |
$home_server_pick).'<br />'; |
&mt('LON-CAPA Home Server for New Users')) |
} else { |
.&mt('LON-CAPA domain: [_1] with home server:','"'.$defdom.'"') |
$Str .= $home_server_pick; |
.$home_server_pick |
} |
.&Apache::lonhtmlcommon::row_closure(); |
$Str .= '<h3>'.&mt('Default domain').'</h3>'."\n". |
} else { |
&Apache::loncommon::select_dom_form($defdom,'defaultdomain',undef,1); |
$Str .= $home_server_pick. |
$Str .= '<h3>'.&mt('Starting and Ending Dates'). |
&Apache::lonhtmlcommon::row_closure(); |
"</h3>\n"; |
} |
$Str .= "<p>\n".$date_table."</p>\n"; |
|
|
$Str .= &Apache::lonhtmlcommon::row_title(&mt('Default domain')) |
|
.&Apache::loncommon::select_dom_form($defdom,'defaultdomain',undef,1) |
|
.&Apache::lonhtmlcommon::row_closure(); |
|
|
|
$Str .= &Apache::lonhtmlcommon::row_title(&mt('Starting and Ending Dates')) |
|
."<p>\n".$date_table."</p>\n" |
|
.&Apache::lonhtmlcommon::row_closure(); |
|
|
if ($context eq 'domain') { |
if ($context eq 'domain') { |
$Str .= '<h3>'.&mt('Settings for assigning roles:').'</h3>'."\n". |
$Str .= &Apache::lonhtmlcommon::row_title( |
&mt('Pick the action to take on roles for these users:').'<br /><span class="LC_nobreak"><label><input type="radio" name="roleaction" value="norole" checked="checked" /> '.&mt('No role changes').'</label> <label><input type="radio" name="roleaction" value="domain" /> '.&mt('Add a domain role').'</label> <label><input type="radio" name="roleaction" value="course" /> '.&mt('Add a course role').'</label></span>'; |
&mt('Settings for assigning roles')) |
} |
.&mt('Pick the action to take on roles for these users:').'<br />' |
if ($context eq 'author') { |
.'<span class="LC_nobreak"><label>' |
$Str .= '<h3>'.&mt('Default role')."</h3>\n". |
.'<input type="radio" name="roleaction" value="norole" checked="checked" />' |
&mt('Choose the role to assign to users without a value specified in the uploaded file'); |
.' '.&mt('No role changes').'</label>' |
|
.' <label>' |
|
.'<input type="radio" name="roleaction" value="domain" />' |
|
.' '.&mt('Add a domain role').'</label>' |
|
.' <label>' |
|
.'<input type="radio" name="roleaction" value="course" />' |
|
.' '.&mt('Add a course role').'</label>' |
|
.'</span>'; |
|
} elsif ($context eq 'author') { |
|
$Str .= &Apache::lonhtmlcommon::row_title( |
|
&mt('Default role')) |
|
.&mt('Choose the role to assign to users without a value specified in the uploaded file.') |
} elsif ($context eq 'course') { |
} elsif ($context eq 'course') { |
$Str .= '<h3>'.&mt('Default role and section')."</h3>\n". |
$Str .= &Apache::lonhtmlcommon::row_title( |
&mt('Choose the role and/or section(s) to assign to users without values specified in the uploaded file'); |
&mt('Default role and section')) |
} else { |
.&mt('Choose the role and/or section(s) to assign to users without values specified in the uploaded file.'); |
$Str .= '<br /><br /><b>'.&mt('Default role and/or section(s)')."</b><br />\n". |
} else { |
&mt('Role and/or section(s) for users without values specified in the uploaded file.'); |
$Str .= &Apache::lonhtmlcommon::row_title( |
|
&mt('Default role and/or section(s)')) |
|
.&mt('Role and/or section(s) for users without values specified in the uploaded file.'); |
} |
} |
$Str .= '<br />'; |
|
if (($context eq 'domain') || ($context eq 'author')) { |
if (($context eq 'domain') || ($context eq 'author')) { |
|
$Str .= '<br />'; |
my ($options,$cb_script,$coursepick) = &default_role_selector($context,1); |
my ($options,$cb_script,$coursepick) = &default_role_selector($context,1); |
if ($context eq 'domain') { |
if ($context eq 'domain') { |
$Str .= '<span class="LC_role_level">'.&mt('Domain Level').'</span><br />'.$options.'<br /><br /><span class="LC_role_level">'.&mt('Course Level').'</span><br />'.$cb_script.$coursepick; |
$Str .= '<p>' |
|
.'<b>'.&mt('Domain Level').'</b><br />' |
|
.$options |
|
.'</p><p>' |
|
.'<b>'.&mt('Course Level').'</b>' |
|
.'</p>' |
|
.$cb_script.$coursepick |
|
.&Apache::lonhtmlcommon::row_closure(); |
} elsif ($context eq 'author') { |
} elsif ($context eq 'author') { |
$Str .= $options; |
$Str .= $options |
|
.&Apache::lonhtmlcommon::row_closure(1); # last row in pick_box |
} |
} |
} else { |
} else { |
my ($cnum,$cdom) = &get_course_identity(); |
my ($cnum,$cdom) = &get_course_identity(); |
my $rowtitle = &mt('section'); |
my $rowtitle = &mt('section'); |
my $secbox = §ion_picker($cdom,$cnum,'Any',$rowtitle, |
my $secbox = §ion_picker($cdom,$cnum,'Any',$rowtitle, |
$permission,$context,'upload'); |
$permission,$context,'upload',$crstype); |
$Str .= $secbox."<h3>".&mt('Full Update')."</h3>\n". |
$Str .= $secbox |
'<p><label><input type="checkbox" name="fullup" value="yes" />'. |
.&Apache::lonhtmlcommon::row_closure(); |
' '.&mt('Display students with current/future access who are not in the uploaded file.').'</label><br />'.&mt('Students selected from this list can be dropped.').'</p>'."\n"; |
my %lt; |
|
if ($crstype eq 'Community') { |
|
%lt = &Apache::lonlocal::texthash ( |
|
disp => 'Display members with current/future access who are not in the uploaded file', |
|
stus => 'Members selected from this list can be dropped.' |
|
); |
|
} else { |
|
%lt = &Apache::lonlocal::texthash ( |
|
disp => 'Display students with current/future access who are not in the uploaded file', |
|
stus => 'Students selected from this list can be dropped.' |
|
); |
|
} |
|
$Str .= &Apache::lonhtmlcommon::row_title(&mt('Full Update')) |
|
.'<label><input type="checkbox" name="fullup" value="yes" />' |
|
.' '.$lt{'disp'} |
|
.'</label><br />' |
|
.$lt{'stus'} |
|
.&Apache::lonhtmlcommon::row_closure(); |
} |
} |
if ($context eq 'course' || $context eq 'domain') { |
if ($context eq 'course' || $context eq 'domain') { |
$Str .= &forceid_change($context); |
$Str .= &forceid_change($context); |
} |
} |
|
|
|
$Str .= &Apache::lonhtmlcommon::end_pick_box(); |
$Str .= '</div>'; |
$Str .= '</div>'; |
$Str .= '<div class="LC_clear_float_footer">'; |
|
|
# Footer |
|
$Str .= '<div class="LC_clear_float_footer">' |
|
.'<hr />'; |
if ($context eq 'course') { |
if ($context eq 'course') { |
$Str .= '<div class="LC_info">' |
$Str .= '<p class="LC_info">' |
.&mt('Note: For large courses, this operation may be time consuming.') |
.&mt('Note: For large courses, this operation may be time consuming.') |
.'</div>'; |
.'</p>'; |
} |
} |
$Str .= '<input type="button"' |
$Str .= '<p><input type="button"' |
.'onClick="javascript:verify(this.form,this.form.csec)" ' |
.' onclick="javascript:verify(this.form,this.form.csec)"' |
.'value="'.&mt('Update Users').'" />'."\n" |
.' value="'.&mt('Update Users').'" />' |
|
.'</p>'."\n" |
.'</div>'; |
.'</div>'; |
$r->print($Str); |
$r->print($Str); |
return; |
return; |
Line 837 sub print_upload_manager_footer {
|
Line 911 sub print_upload_manager_footer {
|
sub forceid_change { |
sub forceid_change { |
my ($context) = @_; |
my ($context) = @_; |
my $output = |
my $output = |
"<h3>".&mt('Student/Employee ID')."</h3>\n". |
&Apache::lonhtmlcommon::row_title(&mt('Student/Employee ID')) |
"<p>\n".'<label><input type="checkbox" name="forceid" value="yes" />'. |
.'<label><input type="checkbox" name="forceid" value="yes" />' |
&mt('Disable Student/Employee ID Safeguard and force change of conflicting IDs'). |
.&mt('Disable Student/Employee ID Safeguard and force change of conflicting IDs') |
'</label><br />'."\n". |
.'</label><br />'."\n" |
&mt('(only do if you know what you are doing.)')."\n"; |
.&mt('(only do if you know what you are doing.)')."\n"; |
if ($context eq 'domain') { |
if ($context eq 'domain') { |
$output .= '<br /><label><input type="checkbox" name="recurseid"'. |
$output .= '<br /><label><input type="checkbox" name="recurseid"'. |
' value="yes" />'. |
' value="yes" />'. |
&mt('Update student/employee ID in courses in which user is active/future student,[_1](if forcing change).','<br />'). |
&mt('Update student/employee ID in courses in which user is active/future student,[_1](if forcing change).','<br />'). |
'</label>'."\n"; |
'</label>'."\n"; |
} |
} |
$output .= '</p>'; |
$output .= &Apache::lonhtmlcommon::row_closure(1); # last row in pick_box |
return $output; |
return $output; |
} |
} |
|
|
############################################################### |
############################################################### |
############################################################### |
############################################################### |
sub print_upload_manager_form { |
sub print_upload_manager_form { |
my ($r,$context,$permission) = @_; |
my ($r,$context,$permission,$crstype) = @_; |
my $firstLine; |
my $firstLine; |
my $datatoken; |
my $datatoken; |
if (!$env{'form.datatoken'}) { |
if (!$env{'form.datatoken'}) { |
Line 938 sub print_upload_manager_form {
|
Line 1012 sub print_upload_manager_form {
|
} |
} |
$r->print('</div>'); |
$r->print('</div>'); |
&print_upload_manager_footer($r,$i,$keyfields,$defdom,$today,$halfyear, |
&print_upload_manager_footer($r,$i,$keyfields,$defdom,$today,$halfyear, |
$context,$permission); |
$context,$permission,$crstype); |
} |
} |
|
|
sub setup_date_selectors { |
sub setup_date_selectors { |
Line 1012 sub get_dates_from_form {
|
Line 1086 sub get_dates_from_form {
|
} |
} |
|
|
sub date_setting_table { |
sub date_setting_table { |
my ($starttime,$endtime,$mode,$bulkaction,$formname,$permission) = @_; |
my ($starttime,$endtime,$mode,$bulkaction,$formname,$permission,$crstype) = @_; |
my $nolink; |
my $nolink; |
if ($bulkaction) { |
if ($bulkaction) { |
$nolink = 1; |
$nolink = 1; |
Line 1029 sub date_setting_table {
|
Line 1103 sub date_setting_table {
|
($env{'form.action'} eq 'upload')) { |
($env{'form.action'} eq 'upload')) { |
if ($env{'request.course.sec'} eq '') { |
if ($env{'request.course.sec'} eq '') { |
$dateDefault = '<span class="LC_nobreak">'. |
$dateDefault = '<span class="LC_nobreak">'. |
'<label><input type="checkbox" name="makedatesdefault" value="1" /> '. |
'<label><input type="checkbox" name="makedatesdefault" value="1" /> '; |
&mt('make these dates the default access dates for future student enrollment'). |
if ($crstype eq 'Community') { |
'</label></span>'; |
$dateDefault .= &mt("make these dates the default access dates for future community enrollment"); |
|
} else { |
|
$dateDefault .= &mt("make these dates the default access dates for future course enrollment"); |
|
} |
|
$dateDefault .= '</label></span>'; |
} |
} |
} |
} |
} |
} |
Line 1060 sub date_setting_table {
|
Line 1138 sub date_setting_table {
|
} |
} |
|
|
sub make_dates_default { |
sub make_dates_default { |
my ($startdate,$enddate,$context) = @_; |
my ($startdate,$enddate,$context,$crstype = @_; |
my $result = ''; |
my $result = ''; |
if ($context eq 'course') { |
if ($context eq 'course') { |
my ($cnum,$cdom) = &get_course_identity(); |
my ($cnum,$cdom) = &get_course_identity(); |
Line 1068 sub make_dates_default {
|
Line 1146 sub make_dates_default {
|
{'default_enrollment_start_date'=>$startdate, |
{'default_enrollment_start_date'=>$startdate, |
'default_enrollment_end_date' =>$enddate},$cdom,$cnum); |
'default_enrollment_end_date' =>$enddate},$cdom,$cnum); |
if ($put_result eq 'ok') { |
if ($put_result eq 'ok') { |
$result .= &mt('Set default start and end access dates for course.'). |
if ($crstype eq 'Community') { |
'<br />'."\n"; |
$result .= &mt('Set default start and end access dates for community.'); |
|
} else { |
|
$result .= &mt('Set default start and end access dates for course.'); |
|
} |
|
$result .= '<br />'."\n"; |
# |
# |
# Refresh the course environment |
# Refresh the course environment |
&Apache::lonnet::coursedescription($env{'request.course.id'}, |
&Apache::lonnet::coursedescription($env{'request.course.id'}, |
{'freshen_cache' => 1}); |
{'freshen_cache' => 1}); |
} else { |
} else { |
$result .= &mt('Unable to set default access dates for course.').":".$put_result. |
if ($crstype eq 'Community') { |
'<br />'; |
$result .= &mt('Unable to set default access dates for community'); |
|
} else { |
|
$result .= &mt('Unable to set default access dates for course'); |
|
} |
|
$result .= ':'.$put_result.'<br />'; |
} |
} |
} |
} |
return $result; |
return $result; |
} |
} |
|
|
sub default_role_selector { |
sub default_role_selector { |
my ($context,$checkpriv) = @_; |
my ($context,$checkpriv,$crstype) = @_; |
my %customroles; |
my %customroles; |
my ($options,$coursepick,$cb_jscript); |
my ($options,$coursepick,$cb_jscript); |
if ($context ne 'author') { |
if ($context ne 'author') { |
Line 1099 sub default_role_selector {
|
Line 1185 sub default_role_selector {
|
$options = '<select name="defaultrole">'."\n". |
$options = '<select name="defaultrole">'."\n". |
' <option value="">'.&mt('Please select').'</option>'."\n"; |
' <option value="">'.&mt('Please select').'</option>'."\n"; |
if ($context eq 'course') { |
if ($context eq 'course') { |
$options .= &default_course_roles($context,$checkpriv,%customroles); |
$options .= &default_course_roles($context,$checkpriv,$crstype,%customroles); |
} elsif ($context eq 'author') { |
} elsif ($context eq 'author') { |
my @roles = &construction_space_roles($checkpriv); |
my @roles = &construction_space_roles($checkpriv); |
foreach my $role (@roles) { |
foreach my $role (@roles) { |
Line 1122 sub default_role_selector {
|
Line 1208 sub default_role_selector {
|
'<th>'.$lt{'grs'}.'</th>'. |
'<th>'.$lt{'grs'}.'</th>'. |
&Apache::loncommon::end_data_table_header_row(). |
&Apache::loncommon::end_data_table_header_row(). |
&Apache::loncommon::start_data_table_row()."\n". |
&Apache::loncommon::start_data_table_row()."\n". |
'<td><input type="text" name="coursedesc" value="" onFocus="this.blur();opencrsbrowser('."'studentform','dccourse','dcdomain','coursedesc',''".')" /></td>'."\n". |
'<td><input type="text" name="coursedesc" value="" onfocus="this.blur();opencrsbrowser('."'studentform','dccourse','dcdomain','coursedesc',''".')" /></td>'."\n". |
'<td><select name="courserole">'."\n". |
'<td><select name="courserole">'."\n". |
&default_course_roles($context,$checkpriv,%customroles)."\n". |
&default_course_roles($context,$checkpriv,'Course',%customroles)."\n". |
'</select></td><td>'. |
'</select></td><td>'. |
'<table class="LC_createuser">'. |
'<table class="LC_createuser">'. |
'<tr class="LC_section_row"><td valign"top">'. |
'<tr class="LC_section_row"><td valign"top">'. |
Line 1149 sub default_role_selector {
|
Line 1235 sub default_role_selector {
|
} |
} |
|
|
sub default_course_roles { |
sub default_course_roles { |
my ($context,$checkpriv,%customroles) = @_; |
my ($context,$checkpriv,$crstype,%customroles) = @_; |
my $output; |
my $output; |
my $custom = 1; |
my $custom = 1; |
my @roles = &course_roles($context,$checkpriv,$custom); |
my @roles = &course_roles($context,$checkpriv,$custom,lc($crstype)); |
foreach my $role (@roles) { |
foreach my $role (@roles) { |
if ($role ne 'cr') { |
if ($role ne 'cr') { |
my $plrole=&Apache::lonnet::plaintext($role); |
my $plrole=&Apache::lonnet::plaintext($role,$crstype); |
$output .= ' <option value="'.$role.'">'.$plrole.'</option>'; |
$output .= ' <option value="'.$role.'">'.$plrole.'</option>'; |
} |
} |
} |
} |
Line 1204 sub domain_roles {
|
Line 1290 sub domain_roles {
|
} |
} |
|
|
sub course_roles { |
sub course_roles { |
my ($context,$checkpriv,$custom) = @_; |
my ($context,$checkpriv,$custom,$roletype) = @_; |
my @allroles = &roles_by_context('course',$custom); |
my @allroles = &roles_by_context('course',$custom,$roletype); |
my @roles; |
my @roles; |
if ($context eq 'domain') { |
if ($context eq 'domain') { |
@roles = @allroles; |
@roles = @allroles; |
Line 1216 sub course_roles {
|
Line 1302 sub course_roles {
|
if (&Apache::lonnet::allowed('c'.$role,$env{'request.course.id'})) { |
if (&Apache::lonnet::allowed('c'.$role,$env{'request.course.id'})) { |
push(@roles,$role); |
push(@roles,$role); |
} else { |
} else { |
if ($role ne 'cc' && $env{'request.course.sec'} ne '') { |
if ((($role ne 'cc') && ($role ne 'co')) && ($env{'request.course.sec'} ne '')) { |
if (&Apache::lonnet::allowed('c'.$role, |
if (&Apache::lonnet::allowed('c'.$role, |
$env{'request.course.id'}.'/'. |
$env{'request.course.id'}.'/'. |
$env{'request.course.sec'})) { |
$env{'request.course.sec'})) { |
Line 1234 sub course_roles {
|
Line 1320 sub course_roles {
|
} |
} |
|
|
sub curr_role_permissions { |
sub curr_role_permissions { |
my ($context,$setting,$checkpriv) = @_; |
my ($context,$setting,$checkpriv,$type) = @_; |
my $custom = 1; |
my $custom = 1; |
my @roles; |
my @roles; |
if ($context eq 'author') { |
if ($context eq 'author') { |
@roles = &construction_space_roles($checkpriv); |
@roles = &construction_space_roles($checkpriv); |
} elsif ($context eq 'domain') { |
} elsif ($context eq 'domain') { |
if ($setting eq 'course') { |
if ($setting eq 'course') { |
@roles = &course_roles($context,$checkpriv,$custom); |
@roles = &course_roles($context,$checkpriv,$custom,$type); |
} else { |
} else { |
@roles = &domain_roles($checkpriv); |
@roles = &domain_roles($checkpriv); |
} |
} |
} elsif ($context eq 'course') { |
} elsif ($context eq 'course') { |
@roles = &course_roles($context,$checkpriv,$custom); |
@roles = &course_roles($context,$checkpriv,$custom,$type); |
} |
} |
return @roles; |
return @roles; |
} |
} |
Line 1315 sub print_userlist {
|
Line 1401 sub print_userlist {
|
'html' => 'HTML'); |
'html' => 'HTML'); |
my $output_selector = '<select size="1" name="output" >'; |
my $output_selector = '<select size="1" name="output" >'; |
foreach my $outputformat ('html','csv','excel') { |
foreach my $outputformat ('html','csv','excel') { |
my $option = '<option value="'.$outputformat.'" '; |
my $option = '<option value="'.$outputformat.'"'; |
if ($outputformat eq $env{'form.output'}) { |
if ($outputformat eq $env{'form.output'}) { |
$option .= 'selected '; |
$option .= ' selected="selected"'; |
} |
} |
$option .='>'.$lt{$outputformat}.'</option>'; |
$option .='>'.$lt{$outputformat}.'</option>'; |
$output_selector .= "\n".$option; |
$output_selector .= "\n".$option; |
Line 1346 sub print_userlist {
|
Line 1432 sub print_userlist {
|
'<input type="hidden" name="phase" value="" /></form>'); |
'<input type="hidden" name="phase" value="" /></form>'); |
return; |
return; |
} |
} |
if (!(($context eq 'domain') && ($env{'form.roletype'} eq 'course'))) { |
if (!(($context eq 'domain') && |
|
(($env{'form.roletype'} eq 'course') || ($env{'form.roletype'} eq 'community')))) { |
$r->print(' '.&list_submit_button(&mt('Update Display')). |
$r->print(' '.&list_submit_button(&mt('Update Display')). |
"\n</p>\n"); |
"\n</p>\n"); |
} |
} |
my ($indexhash,$keylist) = &make_keylist_array(); |
my ($indexhash,$keylist) = &make_keylist_array(); |
my (%userlist,%userinfo); |
my (%userlist,%userinfo,$clearcoursepick); |
if ($context eq 'domain' && $env{'form.roletype'} eq 'course') { |
if (($context eq 'domain') && |
|
($env{'form.roletype'} eq 'course') || |
|
($env{'form.roletype'} eq 'community')) { |
|
my ($crstype,$numcodes,$title,$warning); |
|
if ($env{'form.roletype'} eq 'course') { |
|
$crstype = 'Course'; |
|
$numcodes = $totcodes; |
|
$title = &mt('Select Courses'); |
|
$warning = &mt('Warning: data retrieval for multiple courses can take considerable time, as this operation is not currently optimized.'); |
|
} elsif ($env{'form.roletype'} eq 'community') { |
|
$crstype = 'Community'; |
|
$numcodes = 0; |
|
$title = &mt('Select Communities'); |
|
$warning = &mt('Warning: data retrieval for multiple communities can take considerable time, as this operation is not currently optimized.'); |
|
} |
my $courseform = |
my $courseform = |
&Apache::lonhtmlcommon::course_selection($formname,$totcodes, |
&Apache::lonhtmlcommon::course_selection($formname,$numcodes, |
$codetitles,$idlist,$idlist_titles); |
$codetitles,$idlist,$idlist_titles,$crstype); |
$r->print('<p>'.&Apache::lonhtmlcommon::start_pick_box()."\n". |
$r->print('<p>'.&Apache::lonhtmlcommon::start_pick_box()."\n". |
&Apache::lonhtmlcommon::start_pick_box()."\n". |
&Apache::lonhtmlcommon::start_pick_box()."\n". |
&Apache::lonhtmlcommon::row_title(&mt('Select Course(s)'), |
&Apache::lonhtmlcommon::row_title($title,'LC_oddrow_value')."\n". |
'LC_oddrow_value')."\n". |
|
$courseform."\n". |
$courseform."\n". |
&Apache::lonhtmlcommon::row_closure(1). |
&Apache::lonhtmlcommon::row_closure(1). |
&Apache::lonhtmlcommon::end_pick_box().'</p>'. |
&Apache::lonhtmlcommon::end_pick_box().'</p>'. |
'<p>'.&list_submit_button(&mt('Update Display')). |
'<p><input type="hidden" name="origroletype" value="'.$env{'form.roletype'}.'" />'. |
"\n".'</p><span class="LC_warning">'.&mt('Warning: data retrieval for multiple courses can take considerable time, as this operation is not currently optimized.').'</span>'."\n"); |
&list_submit_button(&mt('Update Display')). |
if ($env{'form.coursepick'}) { |
"\n".'</p><span class="LC_warning">'.$warning.'</span>'."\n"); |
|
$clearcoursepick = 0; |
|
if (($env{'form.origroletype'} ne '') && |
|
($env{'form.origroletype'} ne $env{'form.roletype'})) { |
|
$clearcoursepick = 1; |
|
} |
|
if (($env{'form.coursepick'}) && (!$clearcoursepick)) { |
$r->print('<hr />'.&mt('Searching').' ...<br /> <br />'); |
$r->print('<hr />'.&mt('Searching').' ...<br /> <br />'); |
} |
} |
} else { |
} else { |
Line 1439 sub print_userlist {
|
Line 1545 sub print_userlist {
|
} |
} |
} |
} |
} elsif ($env{'form.roletype'} eq 'course') { |
} elsif ($env{'form.roletype'} eq 'course') { |
if ($env{'form.coursepick'}) { |
if (($env{'form.coursepick'}) && (!$clearcoursepick)) { |
my %courses = &process_coursepick(); |
my %courses = &process_coursepick(); |
my %allusers; |
my %allusers; |
my $hidepriv = 1; |
my $hidepriv = 1; |
Line 1450 sub print_userlist {
|
Line 1556 sub print_userlist {
|
my (@roles,@sections,%access,%users,%userdata, |
my (@roles,@sections,%access,%users,%userdata, |
%statushash); |
%statushash); |
if ($env{'form.showrole'} eq 'Any') { |
if ($env{'form.showrole'} eq 'Any') { |
@roles = &course_roles($context,undef,$custom); |
@roles = &course_roles($context,undef,$custom, |
|
$env{'form.roletype'}); |
} else { |
} else { |
@roles = ($env{'form.showrole'}); |
@roles = ($env{'form.showrole'}); |
} |
} |
Line 1496 sub print_userlist {
|
Line 1603 sub print_userlist {
|
$r->print(&mt('There are no authors or co-authors to display.')."\n"); |
$r->print(&mt('There are no authors or co-authors to display.')."\n"); |
} elsif ($env{'form.roletype'} eq 'course') { |
} elsif ($env{'form.roletype'} eq 'course') { |
$r->print(&mt('There are no course users to display')."\n"); |
$r->print(&mt('There are no course users to display')."\n"); |
|
} elsif ($env{'form.roletype'} eq 'community') { |
|
$r->print(&mt('There are no community users to display')."\n"); |
} |
} |
} elsif ($context eq 'course') { |
} elsif ($context eq 'course') { |
$r->print(&mt('There are no course users to display.')."\n"); |
$r->print(&mt('There are no course users to display.')."\n"); |
Line 1538 sub role_filter {
|
Line 1647 sub role_filter {
|
$role_select = '<select name="showrole">'."\n". |
$role_select = '<select name="showrole">'."\n". |
'<option value="Any" '.$roleselected.'>'. |
'<option value="Any" '.$roleselected.'>'. |
&mt('Any role').'</option>'; |
&mt('Any role').'</option>'; |
my @poss_roles = &curr_role_permissions($context); |
my ($roletype,$crstype); |
|
if ($context eq 'course') { |
|
$crstype = &Apache::loncommon::course_type(); |
|
if ($crstype eq 'Community') { |
|
$roletype = 'community'; |
|
} else { |
|
$roletype = 'course'; |
|
} |
|
} |
|
my @poss_roles = &curr_role_permissions($context,'','',$roletype); |
foreach my $role (@poss_roles) { |
foreach my $role (@poss_roles) { |
$roleselected = ''; |
$roleselected = ''; |
if ($role eq $env{'form.showrole'}) { |
if ($role eq $env{'form.showrole'}) { |
Line 1548 sub role_filter {
|
Line 1666 sub role_filter {
|
if ($role eq 'cr') { |
if ($role eq 'cr') { |
$plrole = &mt('Custom role'); |
$plrole = &mt('Custom role'); |
} else { |
} else { |
$plrole=&Apache::lonnet::plaintext($role); |
$plrole=&Apache::lonnet::plaintext($role,$crstype); |
} |
} |
$role_select .= '<option value="'.$role.'"'.$roleselected.'>'.$plrole.'</option>'; |
$role_select .= '<option value="'.$role.'"'.$roleselected.'>'.$plrole.'</option>'; |
} |
} |
Line 1599 sub section_group_filter {
|
Line 1717 sub section_group_filter {
|
foreach my $option ('all','none',@options) { |
foreach my $option ('all','none',@options) { |
$currsel = ''; |
$currsel = ''; |
if ($env{'form.'.$name{$item}} eq $option) { |
if ($env{'form.'.$name{$item}} eq $option) { |
$currsel = ' selected="selected" '; |
$currsel = ' selected="selected"'; |
} |
} |
$markup .= ' <option value="'.$option.'"'.$currsel.'>'; |
$markup .= ' <option value="'.$option.'"'.$currsel.'>'; |
if (($option eq 'all') || ($option eq 'none')) { |
if (($option eq 'all') || ($option eq 'none')) { |
Line 1978 sub show_users_list {
|
Line 2096 sub show_users_list {
|
$sortby = 'username'; |
$sortby = 'username'; |
} |
} |
my $setting = $env{'form.roletype'}; |
my $setting = $env{'form.roletype'}; |
my ($cid,$cdom,$cnum,$classgroups,$displayphotos,$displayclickers); |
my ($cid,$cdom,$cnum,$classgroups,$displayphotos,$displayclickers,$crstype); |
if ($context eq 'course') { |
if ($context eq 'course') { |
$cid = $env{'request.course.id'}; |
$cid = $env{'request.course.id'}; |
|
$crstype = &Apache::loncommon::course_type(); |
($cnum,$cdom) = &get_course_identity($cid); |
($cnum,$cdom) = &get_course_identity($cid); |
($classgroups) = &Apache::loncoursedata::get_group_memberships( |
($classgroups) = &Apache::loncoursedata::get_group_memberships( |
$userlist,$keylist,$cdom,$cnum); |
$userlist,$keylist,$cdom,$cnum); |
Line 1998 sub show_users_list {
|
Line 2117 sub show_users_list {
|
if ($env{'course.'.$cid.'.internal.showphoto'}) { |
if ($env{'course.'.$cid.'.internal.showphoto'}) { |
$r->print(' |
$r->print(' |
<script type="text/javascript"> |
<script type="text/javascript"> |
|
// <![CDATA[ |
function photowindow(photolink) { |
function photowindow(photolink) { |
var title = "Photo_Viewer"; |
var title = "Photo_Viewer"; |
var options = "scrollbars=1,resizable=1,menubar=0"; |
var options = "scrollbars=1,resizable=1,menubar=0"; |
Line 2005 function photowindow(photolink) {
|
Line 2125 function photowindow(photolink) {
|
stdeditbrowser = open(photolink,title,options,"1"); |
stdeditbrowser = open(photolink,title,options,"1"); |
stdeditbrowser.focus(); |
stdeditbrowser.focus(); |
} |
} |
|
// ]]> |
</script> |
</script> |
'); |
'); |
} |
} |
Line 2021 END
|
Line 2142 END
|
$r->print(<<END); |
$r->print(<<END); |
|
|
<script type="text/javascript" language="Javascript"> |
<script type="text/javascript" language="Javascript"> |
|
// <![CDATA[ |
$check_uncheck_js |
$check_uncheck_js |
|
|
$verify_action_js |
$verify_action_js |
Line 2058 function username_display_launch(usernam
|
Line 2180 function username_display_launch(usernam
|
document.location.href = '/adm/'+domain+'/'+username+'/aboutme'; |
document.location.href = '/adm/'+domain+'/'+username+'/aboutme'; |
} |
} |
} |
} |
|
if (target == 'track') { |
|
if (document.$formname.userwin.checked == true) { |
|
var url = '/adm/trackstudent?selected_student='+username+':'+domain+'&only_body=1'; |
|
var options = 'height=600,width=800,resizable=yes,scrollbars=yes,location=no,menubar=no,toolbar=no'; |
|
var trackwin = window.open(url,'',options,1); |
|
trackwin.focus(); |
|
return; |
|
} else { |
|
document.location.href = '/adm/trackstudent?selected_student='+username+':'+domain; |
|
} |
|
} |
} |
} |
|
// ]]> |
</script> |
</script> |
$date_sec_selector |
$date_sec_selector |
<input type="hidden" name="state" value="$env{'form.state'}" /> |
<input type="hidden" name="state" value="$env{'form.state'}" /> |
Line 2091 END
|
Line 2225 END
|
'aboutme' => "Display a user's personal information page", |
'aboutme' => "Display a user's personal information page", |
'owin' => "Open in a new window", |
'owin' => "Open in a new window", |
'modify' => "Modify a user's information", |
'modify' => "Modify a user's information", |
|
'track' => "View a user's recent activity", |
'clicker' => "Clicker-ID", |
'clicker' => "Clicker-ID", |
); |
); |
if ($context eq 'domain' && $env{'form.roletype'} eq 'course') { |
if ($context eq 'domain' && $env{'form.roletype'} eq 'course') { |
Line 2162 END
|
Line 2297 END
|
if ($env{'form.showrole'} eq 'Any') { |
if ($env{'form.showrole'} eq 'Any') { |
my $custom = 1; |
my $custom = 1; |
if ($context eq 'domain') { |
if ($context eq 'domain') { |
@allroles = &roles_by_context($setting,$custom); |
@allroles = &roles_by_context($setting,$custom,$crstype); |
} else { |
} else { |
@allroles = &roles_by_context($context,$custom); |
@allroles = &roles_by_context($context,$custom,$crstype); |
} |
} |
} else { |
} else { |
@allroles = ($env{'form.showrole'}); |
@allroles = ($env{'form.showrole'}); |
Line 2204 END
|
Line 2339 END
|
if ($permission->{'cusr'}) { |
if ($permission->{'cusr'}) { |
unshift (@linkdests,'modify'); |
unshift (@linkdests,'modify'); |
} |
} |
|
if (&Apache::lonnet::allowed('vsa', $env{'request.course.id'}) || |
|
&Apache::lonnet::allowed('vsa', $env{'request.course.id'}.'/'. |
|
$env{'request.course.sec'})) { |
|
push(@linkdests,'track'); |
|
} |
$output .= '<td>'; |
$output .= '<td>'; |
my $usernamelink = $env{'form.usernamelink'}; |
my $usernamelink = $env{'form.usernamelink'}; |
if ($usernamelink eq '') { |
if ($usernamelink eq '') { |
Line 2472 END
|
Line 2612 END
|
if ($clickers!~/\w/) { $clickers='-'; } |
if ($clickers!~/\w/) { $clickers='-'; } |
$in{'clicker'} = $clickers; |
$in{'clicker'} = $clickers; |
my $role = $in{'role'}; |
my $role = $in{'role'}; |
$in{'role'}=&Apache::lonnet::plaintext($sdata->[$index{'role'}]); |
$in{'role'}=&Apache::lonnet::plaintext($sdata->[$index{'role'}],$crstype); |
if (! defined($in{'start'}) || $in{'start'} == 0) { |
if (! defined($in{'start'}) || $in{'start'} == 0) { |
$in{'start'} = &mt('none'); |
$in{'start'} = &mt('none'); |
} else { |
} else { |
Line 2770 sub role_type_names {
|
Line 2910 sub role_type_names {
|
'domain' => 'Domain Roles', |
'domain' => 'Domain Roles', |
'author' => 'Co-Author Roles', |
'author' => 'Co-Author Roles', |
'course' => 'Course Roles', |
'course' => 'Course Roles', |
|
'community' => 'Community Roles', |
|
|
); |
); |
return %lt; |
return %lt; |
} |
} |
Line 2874 sub date_section_javascript {
|
Line 3016 sub date_section_javascript {
|
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 = <<"ENDONE"; |
<script type="text/javascript">'."\n"; |
<script type="text/javascript"> |
$output .= <<"ENDONE"; |
// <![CDATA[ |
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; |
var url = '/adm/createuser?'; |
var url = '/adm/createuser?'; |
Line 2899 ENDONE
|
Line 3041 ENDONE
|
stdeditbrowser = open(url,title,options,'1'); |
stdeditbrowser = open(url,title,options,'1'); |
stdeditbrowser.focus(); |
stdeditbrowser.focus(); |
} |
} |
|
// ]]> |
</script> |
</script> |
ENDTWO |
ENDTWO |
return $output; |
return $output; |
} |
} |
|
|
sub date_section_selector { |
sub date_section_selector { |
my ($context,$permission) = @_; |
my ($context,$permission,$crstype) = @_; |
my $callingform = $env{'form.callingform'}; |
my $callingform = $env{'form.callingform'}; |
my $formname = 'dateselect'; |
my $formname = 'dateselect'; |
my $groupslist = &get_groupslist(); |
my $groupslist = &get_groupslist(); |
my $sec_js = &setsections_javascript($formname,$groupslist); |
my $sec_js = &setsections_javascript($formname,$groupslist); |
my $output = <<"END"; |
my $output = <<"END"; |
<script type="text/javascript"> |
<script type="text/javascript"> |
|
// <![CDATA[ |
|
|
$sec_js |
$sec_js |
|
|
Line 2980 END
|
Line 3124 END
|
|
|
$verify_action_js |
$verify_action_js |
|
|
|
// ]]> |
</script> |
</script> |
ENDJS |
ENDJS |
my %lt = &Apache::lonlocal::texthash ( |
my %lt = &Apache::lonlocal::texthash ( |
Line 3002 ENDJS
|
Line 3147 ENDJS
|
} |
} |
$date_items = &date_setting_table($starttime,undef,$context, |
$date_items = &date_setting_table($starttime,undef,$context, |
$env{'form.bulkaction'},$formname, |
$env{'form.bulkaction'},$formname, |
$permission); |
$permission,$crstype); |
} |
} |
$output .= '<h3>'.$headertext.'</h3>'. |
$output .= '<h3>'.$headertext.'</h3>'. |
'<form name="'.$formname.'" method="post">'."\n". |
'<form name="'.$formname.'" method="post">'."\n". |
Line 3034 ENDJS
|
Line 3179 ENDJS
|
$info = '<input type="hidden" name="retainsec" value="0" />'; |
$info = '<input type="hidden" name="retainsec" value="0" />'; |
} |
} |
my $rowtitle = &mt('New section to assign'); |
my $rowtitle = &mt('New section to assign'); |
my $secbox = §ion_picker($cdom,$cnum,$env{'form.showrole'},$rowtitle,$permission,$context); |
my $secbox = §ion_picker($cdom,$cnum,$env{'form.showrole'},$rowtitle,$permission,$context,'',$crstype); |
$output .= $info.$secbox; |
$output .= $info.$secbox; |
} |
} |
$output .= '<p>'. |
$output .= '<p>'. |
Line 3044 ENDJS
|
Line 3189 ENDJS
|
} |
} |
|
|
sub section_picker { |
sub section_picker { |
my ($cdom,$cnum,$role,$rowtitle,$permission,$context,$mode) = @_; |
my ($cdom,$cnum,$role,$rowtitle,$permission,$context,$mode,$crstype) = @_; |
my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum); |
my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum); |
my $sections_select .= &course_sections(\%sections_count,$role); |
my $sections_select .= &course_sections(\%sections_count,$role); |
my $secbox = '<p>'.&Apache::lonhtmlcommon::start_pick_box()."\n"; |
my $secbox = '<p>'.&Apache::lonhtmlcommon::start_pick_box()."\n"; |
if ($mode eq 'upload') { |
if ($mode eq 'upload') { |
my ($options,$cb_script,$coursepick) = |
my ($options,$cb_script,$coursepick) = |
&default_role_selector($context,1); |
&default_role_selector($context,1,$crstype); |
$secbox .= &Apache::lonhtmlcommon::row_title(&mt('role'),'LC_oddrow_value'). |
$secbox .= &Apache::lonhtmlcommon::row_title(&mt('role'),'LC_oddrow_value'). |
$options. &Apache::lonhtmlcommon::row_closure(1)."\n"; |
$options. &Apache::lonhtmlcommon::row_closure(1)."\n"; |
} |
} |
Line 3238 sub viewable_section {
|
Line 3383 sub viewable_section {
|
################################################# |
################################################# |
################################################# |
################################################# |
sub show_drop_list { |
sub show_drop_list { |
my ($r,$classlist,$nosort,$permission) = @_; |
my ($r,$classlist,$nosort,$permission,$crstype) = @_; |
my $cid = $env{'request.course.id'}; |
my $cid = $env{'request.course.id'}; |
my ($cnum,$cdom) = &get_course_identity($cid); |
my ($cnum,$cdom) = &get_course_identity($cid); |
if (! exists($env{'form.sortby'})) { |
if (! exists($env{'form.sortby'})) { |
Line 3256 sub show_drop_list {
|
Line 3401 sub show_drop_list {
|
<input type="hidden" name="action" value="$action" /> |
<input type="hidden" name="action" value="$action" /> |
<input type="hidden" name="state" value="done" /> |
<input type="hidden" name="state" value="done" /> |
<script type="text/javascript" language="Javascript"> |
<script type="text/javascript" language="Javascript"> |
|
// <![CDATA[ |
$check_uncheck_js |
$check_uncheck_js |
|
// ]]> |
</script> |
</script> |
<p> |
<p> |
<input type="hidden" name="phase" value="four" /> |
<input type="hidden" name="phase" value="four" /> |
Line 3282 END
|
Line 3429 END
|
} |
} |
} |
} |
if (!$studentcount) { |
if (!$studentcount) { |
$r->print(&mt('There are no students to drop.')); |
if ($crstype eq 'Community') { |
|
$r->print(&mt('There are no members to drop.')); |
|
} else { |
|
$r->print(&mt('There are no students to drop.')); |
|
} |
return; |
return; |
} |
} |
my ($classgroups) = &Apache::loncoursedata::get_group_memberships( |
my ($classgroups) = &Apache::loncoursedata::get_group_memberships( |
Line 3290 END
|
Line 3441 END
|
my %lt=&Apache::lonlocal::texthash('usrn' => "username", |
my %lt=&Apache::lonlocal::texthash('usrn' => "username", |
'dom' => "domain", |
'dom' => "domain", |
'sn' => "student name", |
'sn' => "student name", |
|
'mn' => "member name", |
'sec' => "section", |
'sec' => "section", |
'start' => "start date", |
'start' => "start date", |
'end' => "end date", |
'end' => "end date", |
'groups' => "active groups", |
'groups' => "active groups", |
); |
); |
|
my $nametitle = $lt{'sn'}; |
|
if ($crstype eq 'Community') { |
|
$nametitle = $lt{'mn'}; |
|
} |
if ($nosort) { |
if ($nosort) { |
$r->print(&Apache::loncommon::start_data_table(). |
$r->print(&Apache::loncommon::start_data_table(). |
&Apache::loncommon::start_data_table_header_row()); |
&Apache::loncommon::start_data_table_header_row()); |
Line 3303 END
|
Line 3459 END
|
<th>$lt{'usrn'}</th> |
<th>$lt{'usrn'}</th> |
<th>$lt{'dom'}</th> |
<th>$lt{'dom'}</th> |
<th>ID</th> |
<th>ID</th> |
<th>$lt{'sn'}</th> |
<th>$nametitle</th> |
<th>$lt{'sec'}</th> |
<th>$lt{'sec'}</th> |
<th>$lt{'start'}</th> |
<th>$lt{'start'}</th> |
<th>$lt{'end'}</th> |
<th>$lt{'end'}</th> |
Line 3322 END
|
Line 3478 END
|
</th><th> |
</th><th> |
<a href="/adm/createuser?action=$action&sortby=id">ID</a> |
<a href="/adm/createuser?action=$action&sortby=id">ID</a> |
</th><th> |
</th><th> |
<a href="/adm/createuser?action=$action&sortby=fullname">$lt{'sn'}</a> |
<a href="/adm/createuser?action=$action&sortby=fullname">$nametitle</a> |
</th><th> |
</th><th> |
<a href="/adm/createuser?action=$action&sortby=section">$lt{'sec'}</a> |
<a href="/adm/createuser?action=$action&sortby=section">$lt{'sec'}</a> |
</th><th> |
</th><th> |
Line 3392 END
|
Line 3548 END
|
$r->print(&Apache::loncommon::end_data_table().'<br />'); |
$r->print(&Apache::loncommon::end_data_table().'<br />'); |
%lt=&Apache::lonlocal::texthash( |
%lt=&Apache::lonlocal::texthash( |
'dp' => "Drop Students", |
'dp' => "Drop Students", |
|
'dm' => "Drop Members", |
'ca' => "check all", |
'ca' => "check all", |
'ua' => "uncheck all", |
'ua' => "uncheck all", |
); |
); |
|
my $btn = $lt{'dp'}; |
|
if ($crstype eq 'Community') { |
|
$btn = $lt{'dm'}; |
|
} |
$r->print(<<"END"); |
$r->print(<<"END"); |
</p> |
</p> |
<p> |
<p> |
Line 3402 END
|
Line 3563 END
|
<input type="button" value="$lt{'ua'}" onclick="javascript:uncheckAll(document.studentform.droplist)" /> |
<input type="button" value="$lt{'ua'}" onclick="javascript:uncheckAll(document.studentform.droplist)" /> |
</p> |
</p> |
<p> |
<p> |
<input type="submit" value="$lt{'dp'}" /> |
<input type="submit" value="$btn" /> |
</p> |
</p> |
END |
END |
return; |
return; |
Line 3416 sub print_first_users_upload_form {
|
Line 3577 sub print_first_users_upload_form {
|
my $str; |
my $str; |
$str = '<input type="hidden" name="phase" value="two" />'; |
$str = '<input type="hidden" name="phase" value="two" />'; |
$str .= '<input type="hidden" name="action" value="upload" />'; |
$str .= '<input type="hidden" name="action" value="upload" />'; |
$str .= '<input type="hidden" name="state" value="got_file" />'; |
$str .= '<input type="hidden" name="state" value="got_file" />'; |
|
|
|
|
$str .= '<h2>'.&mt('Upload a file containing information about users').'</h2>'."\n"; |
$str .= '<h2>'.&mt('Upload a file containing information about users').'</h2>'."\n"; |
$str .= '<p class="LC_info">' |
|
.&mt('Please upload an UTF8 encoded file to ensure a correct character encoding in your classlist.') |
# Excel and CSV Help |
.'</p>'."\n"; |
$str .= '<p>' |
$str .= &Apache::loncommon::upfile_select_html(); |
.&Apache::loncommon::help_open_topic("Course_Create_Class_List", |
$str .= '<p>'; |
&mt("How do I create a users list from a spreadsheet")) |
$str .= &Apache::loncommon::help_open_topic("Course_Create_Class_List", |
."<br />\n" |
&mt("How do I create a users list from a spreadsheet")). |
.&Apache::loncommon::help_open_topic("Course_Convert_To_CSV", |
"<br />\n"; |
&mt("How do I create a CSV file from a spreadsheet")) |
$str .= &Apache::loncommon::help_open_topic("Course_Convert_To_CSV", |
."</p>\n"; |
&mt("How do I create a CSV file from a spreadsheet")); |
|
$str .= "</p>\n"; |
$str .= &Apache::lonhtmlcommon::start_pick_box() |
$str .= "<p>\n"; |
.&Apache::lonhtmlcommon::row_title(&mt('File')) |
$str .= '<label><input type="checkbox" name="noFirstLine" /> '. |
.'<p class="LC_info">'."\n" |
&mt('Ignore First Line')."</label></p>\n"; |
.&mt('Please upload an UTF8 encoded file to ensure a correct character encoding in your classlist.')."\n" |
$str .= '<input type="submit" name="fileupload" value="'. |
.'</p>'."\n" |
&mt('Next').'" />'."<br />\n"; |
.&Apache::loncommon::upfile_select_html() |
|
.&Apache::lonhtmlcommon::row_closure() |
|
.&Apache::lonhtmlcommon::row_title( |
|
'<label for="noFirstLine">' |
|
.&mt('Ignore First Line') |
|
.'</label>') |
|
.'<input type="checkbox" name="noFirstLine" id="noFirstLine" />' |
|
.&Apache::lonhtmlcommon::row_closure(1) |
|
.&Apache::lonhtmlcommon::end_pick_box(); |
|
|
|
$str .= '<p>' |
|
.'<input type="submit" name="fileupload" value="'.&mt('Next').'" />' |
|
.'</p>'; |
|
|
$str .= &Apache::loncommon::end_page(); |
$str .= &Apache::loncommon::end_page(); |
|
|
$r->print($str); |
$r->print($str); |
return; |
return; |
} |
} |
Line 3481 sub upfile_drop_add {
|
Line 3658 sub upfile_drop_add {
|
'domain_choice' => 'scalar', |
'domain_choice' => 'scalar', |
'inststatus_choice' => 'scalar'}); |
'inststatus_choice' => 'scalar'}); |
# |
# |
|
my ($cid,$crstype,$setting); |
|
if ($context eq 'domain') { |
|
$setting = $env{'form.roleaction'}; |
|
} |
|
if ($env{'request.course.id'} ne '') { |
|
$cid = $env{'request.course.id'}; |
|
$crstype = &Apache::loncommon::course_type(); |
|
} elsif ($setting eq 'course') { |
|
if (&Apache::lonnet::is_course($env{'form.dcdomain'},$env{'form.dccourse'})) { |
|
$cid = $env{'form.dcdomain'}.'_'.$env{'form.dccourse'}; |
|
$crstype = &Apache::loncommon::course_type($cid); |
|
} |
|
} |
my ($startdate,$enddate) = &get_dates_from_form(); |
my ($startdate,$enddate) = &get_dates_from_form(); |
if ($env{'form.makedatesdefault'}) { |
if ($env{'form.makedatesdefault'}) { |
$r->print(&make_dates_default($startdate,$enddate,$context)); |
$r->print(&make_dates_default($startdate,$enddate,$context,$crstype); |
} |
} |
# Determine domain and desired host (home server) |
# Determine domain and desired host (home server) |
my $defdom=$env{'request.role.domain'}; |
my $defdom=$env{'request.role.domain'}; |
Line 3535 sub upfile_drop_add {
|
Line 3725 sub upfile_drop_add {
|
$amode = ''; # This causes the loop below to be skipped |
$amode = ''; # This causes the loop below to be skipped |
} |
} |
} |
} |
my ($cid,$defaultsec,$defaultrole,$setting); |
my ($defaultsec,$defaultrole); |
if ($context eq 'domain') { |
if ($context eq 'domain') { |
$setting = $env{'form.roleaction'}; |
|
if ($setting eq 'domain') { |
if ($setting eq 'domain') { |
$defaultrole = $env{'form.defaultrole'}; |
$defaultrole = $env{'form.defaultrole'}; |
} elsif ($setting eq 'course') { |
} elsif ($setting eq 'course') { |
$defaultrole = $env{'form.courserole'}; |
$defaultrole = $env{'form.courserole'}; |
$defaultsec = $env{'form.sections'}; |
$defaultsec = $env{'form.sections'}; |
} |
} |
} elsif ($context eq 'author') { |
} elsif ($context eq 'author') { |
$defaultrole = $env{'form.defaultrole'}; |
$defaultrole = $env{'form.defaultrole'}; |
} elsif ($context eq 'course') { |
} elsif ($context eq 'course') { |
$defaultrole = $env{'form.defaultrole'}; |
$defaultrole = $env{'form.defaultrole'}; |
$defaultsec = $env{'form.sections'}; |
$defaultsec = $env{'form.sections'}; |
} |
} |
if ($env{'request.course.id'} ne '') { |
|
$cid = $env{'request.course.id'}; |
|
} elsif ($setting eq 'course') { |
|
if (&Apache::lonnet::is_course($env{'form.dcdomain'},$env{'form.dccourse'})) { |
|
$cid = $env{'form.dcdomain'}.'_'.$env{'form.dccourse'}; |
|
} |
|
} |
|
# Check to see if user information can be changed |
# Check to see if user information can be changed |
my @userinfo = ('firstname','middlename','lastname','generation', |
my @userinfo = ('firstname','middlename','lastname','generation', |
'permanentemail','id'); |
'permanentemail','id'); |
Line 3569 sub upfile_drop_add {
|
Line 3751 sub upfile_drop_add {
|
} |
} |
my (%userlist,%modifiable_fields,@poss_roles); |
my (%userlist,%modifiable_fields,@poss_roles); |
my $secidx = &Apache::loncoursedata::CL_SECTION(); |
my $secidx = &Apache::loncoursedata::CL_SECTION(); |
my @courseroles = &roles_by_context('course',1); |
my @courseroles = &roles_by_context('course',1,'',$crstype); |
if (!&Apache::lonnet::allowed('mau',$domain)) { |
if (!&Apache::lonnet::allowed('mau',$domain)) { |
if ($context eq 'course' || $context eq 'author') { |
if ($context eq 'course' || $context eq 'author') { |
@poss_roles = &curr_role_permissions($context); |
@poss_roles = &curr_role_permissions($context,'','',$crstype); |
my @statuses = ('active','future'); |
my @statuses = ('active','future'); |
my ($indexhash,$keylist) = &make_keylist_array(); |
my ($indexhash,$keylist) = &make_keylist_array(); |
my %info; |
my %info; |
Line 3659 sub upfile_drop_add {
|
Line 3841 sub upfile_drop_add {
|
} |
} |
my (%curr_rules,%got_rules,%alerts); |
my (%curr_rules,%got_rules,%alerts); |
my %customroles = &my_custom_roles(); |
my %customroles = &my_custom_roles(); |
my @permitted_roles = &roles_on_upload($context,$setting,%customroles); |
my @permitted_roles = |
|
&roles_on_upload($context,$setting,$crstype,%customroles); |
# Get new users list |
# Get new users list |
foreach my $line (@userdata) { |
foreach my $line (@userdata) { |
my @secs; |
my @secs; |
Line 4102 sub user_change_result {
|
Line 4285 sub user_change_result {
|
|
|
# ========================================================= Menu Phase Two Drop |
# ========================================================= Menu Phase Two Drop |
sub print_drop_menu { |
sub print_drop_menu { |
my ($r,$context,$permission) = @_; |
my ($r,$context,$permission,$crstype) = @_; |
$r->print('<h3>'.&mt("Drop Students").'</h3>'."\n". |
my $heading; |
|
if ($crstype eq 'Community') { |
|
$heading = &mt("Drop Members"); |
|
} else { |
|
$heading = &mt("Drop Students"); |
|
} |
|
$r->print('<h3>'.$heading.'</h3>'."\n". |
'<form name="studentform" method="post">'."\n"); |
'<form name="studentform" method="post">'."\n"); |
my $classlist = &Apache::loncoursedata::get_classlist(); |
my $classlist = &Apache::loncoursedata::get_classlist(); |
if (! defined($classlist)) { |
if (! defined($classlist)) { |
$r->print(&mt('There are no students currently enrolled.')."\n"); |
if ($crstype eq 'Community') { |
|
$r->print(&mt('There are no members currently enrolled.')."\n"); |
|
} else { |
|
$r->print(&mt('There are no students currently enrolled.')."\n"); |
|
} |
} else { |
} else { |
&show_drop_list($r,$classlist,'nosort',$permission); |
&show_drop_list($r,$classlist,'nosort',$permission,$crstype); |
} |
} |
$r->print('</form>'. &Apache::loncommon::end_page()); |
$r->print('</form>'. &Apache::loncommon::end_page()); |
return; |
return; |
Line 4121 sub update_user_list {
|
Line 4314 sub update_user_list {
|
my ($r,$context,$setting,$choice) = @_; |
my ($r,$context,$setting,$choice) = @_; |
my $now = time; |
my $now = time; |
my $count=0; |
my $count=0; |
|
my $crstype; |
|
if ($context eq 'course') { |
|
$crstype = &Apache::loncommon::course_type(); |
|
} |
my @changelist; |
my @changelist; |
if ($choice eq 'drop') { |
if ($choice eq 'drop') { |
@changelist = &Apache::loncommon::get_env_multiple('form.droplist'); |
@changelist = &Apache::loncommon::get_env_multiple('form.droplist'); |
Line 4191 sub update_user_list {
|
Line 4388 sub update_user_list {
|
} |
} |
} |
} |
} |
} |
my $plrole = &Apache::lonnet::plaintext($role); |
my $plrole = &Apache::lonnet::plaintext($role,$crstype); |
my $start = $env{'form.'.$item.'_start'}; |
my $start = $env{'form.'.$item.'_start'}; |
my $end = $env{'form.'.$item.'_end'}; |
my $end = $env{'form.'.$item.'_end'}; |
if ($choice eq 'drop') { |
if ($choice eq 'drop') { |
Line 4356 sub update_user_list {
|
Line 4553 sub update_user_list {
|
} |
} |
if ($env{'form.makedatesdefault'}) { |
if ($env{'form.makedatesdefault'}) { |
if ($choice eq 'chgdates' || $choice eq 'reenable' || $choice eq 'activate') { |
if ($choice eq 'chgdates' || $choice eq 'reenable' || $choice eq 'activate') { |
$r->print(&make_dates_default($startdate,$enddate,$context)); |
$r->print(&make_dates_default($startdate,$enddate,$context,$crstype)); |
} |
} |
} |
} |
my $linktext = &mt('Display User Lists'); |
my $linktext = &mt('Display User Lists'); |
Line 4642 sub can_create_user {
|
Line 4839 sub can_create_user {
|
} |
} |
if (ref($domconf{'usercreation'}) eq 'HASH') { |
if (ref($domconf{'usercreation'}) eq 'HASH') { |
if (ref($domconf{'usercreation'}{'cancreate'}) eq 'HASH') { |
if (ref($domconf{'usercreation'}{'cancreate'}) eq 'HASH') { |
if ($context eq 'course' || $context eq 'author') { |
if ($context eq 'course' || $context eq 'author' || $context eq 'requestcrs') { |
my $creation = $domconf{'usercreation'}{'cancreate'}{$context}; |
my $creation = $domconf{'usercreation'}{'cancreate'}{$context}; |
if ($creation eq 'none') { |
if ($creation eq 'none') { |
$cancreate = 0; |
$cancreate = 0; |
Line 4740 sub check_usertype {
|
Line 4937 sub check_usertype {
|
} |
} |
|
|
sub roles_by_context { |
sub roles_by_context { |
my ($context,$custom) = @_; |
my ($context,$custom,$crstype) = @_; |
my @allroles; |
my @allroles; |
if ($context eq 'course') { |
if ($context eq 'course') { |
@allroles = ('st','ad','ta','ep','in','cc'); |
@allroles = ('st'); |
|
if ($env{'request.role'} =~ m{^dc\./}) { |
|
push(@allroles,'ad'); |
|
} |
|
push(@allroles,('ta','ep','in')); |
|
if ($crstype eq 'Community') { |
|
push(@allroles,'co'); |
|
} else { |
|
push(@allroles,'cc'); |
|
} |
if ($custom) { |
if ($custom) { |
push(@allroles,'cr'); |
push(@allroles,'cr'); |
} |
} |
} elsif ($context eq 'author') { |
} elsif ($context eq 'author') { |
@allroles = ('ca','aa'); |
@allroles = ('ca','aa'); |
} elsif ($context eq 'domain') { |
} elsif ($context eq 'domain') { |
@allroles = ('li','dg','sc','au','dc'); |
@allroles = ('li','ad','dg','sc','au','dc'); |
} |
} |
return @allroles; |
return @allroles; |
} |
} |
|
|
sub get_permission { |
sub get_permission { |
my ($context,$roles) = @_; |
my ($context,$crstype) = @_; |
my %permission; |
my %permission; |
if ($context eq 'course') { |
if ($context eq 'course') { |
my $custom = 1; |
my $custom = 1; |
my @allroles = &roles_by_context($context,$custom); |
my @allroles = &roles_by_context($context,$custom,$crstype); |
foreach my $role (@allroles) { |
foreach my $role (@allroles) { |
if (&Apache::lonnet::allowed('c'.$role,$env{'request.course.id'})) { |
if (&Apache::lonnet::allowed('c'.$role,$env{'request.course.id'})) { |
$permission{'cusr'} = 1; |
$permission{'cusr'} = 1; |
Line 4829 sub authorpriv {
|
Line 5035 sub authorpriv {
|
} |
} |
|
|
sub roles_on_upload { |
sub roles_on_upload { |
my ($context,$setting,%customroles) = @_; |
my ($context,$setting,$crstype,%customroles) = @_; |
my (@possible_roles,@permitted_roles); |
my (@possible_roles,@permitted_roles); |
@possible_roles = &curr_role_permissions($context,$setting,1); |
@possible_roles = &curr_role_permissions($context,$setting,1,$crstype); |
foreach my $role (@possible_roles) { |
foreach my $role (@possible_roles) { |
if ($role eq 'cr') { |
if ($role eq 'cr') { |
push(@permitted_roles,keys(%customroles)); |
push(@permitted_roles,keys(%customroles)); |