version 1.17, 2007/12/21 12:41:25
|
version 1.22, 2007/12/22 00:39:52
|
Line 68 sub modifystudent {
|
Line 68 sub modifystudent {
|
my $reply=&Apache::lonnet::modifystudent |
my $reply=&Apache::lonnet::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); |
$section,time,undef,undef,$desiredhost,'','manual', |
|
'',$courseid); |
$result .= $reply.':'; |
$result .= $reply.':'; |
} |
} |
} |
} |
Line 126 sub modifyuserrole {
|
Line 127 sub modifyuserrole {
|
$email,$role,$start,$end); |
$email,$role,$start,$end); |
if ($userresult eq 'ok') { |
if ($userresult eq 'ok') { |
if ($role ne '') { |
if ($role ne '') { |
|
$role =~ s/_/\//g; |
$roleresult = &Apache::lonnet::assignrole($udom,$uname,$scope, |
$roleresult = &Apache::lonnet::assignrole($udom,$uname,$scope, |
$role,$end,$start); |
$role,$end,$start); |
} |
} |
Line 145 sub propagate_id_change {
|
Line 147 sub propagate_id_change {
|
one_time => 1, |
one_time => 1, |
); |
); |
foreach my $item (keys(%roleshash)) { |
foreach my $item (keys(%roleshash)) { |
my ($cnum,$cdom,$role) = split(/:/,$item); |
my ($cnum,$cdom,$role) = split(/:/,$item,-1); |
my ($start,$end) = split(/:/,$roleshash{$item}); |
my ($start,$end) = split(/:/,$roleshash{$item}); |
if (&Apache::lonnet::is_course($cdom,$cnum)) { |
if (&Apache::lonnet::is_course($cdom,$cnum)) { |
my $result = &update_classlist($cdom,$cnum,$udom,$uname,$user); |
my $result = &update_classlist($cdom,$cnum,$udom,$uname,$user); |
Line 265 sub hidden_input {
|
Line 267 sub hidden_input {
|
} |
} |
|
|
sub print_upload_manager_header { |
sub print_upload_manager_header { |
my ($r,$datatoken,$distotal,$krbdefdom,$context)=@_; |
my ($r,$datatoken,$distotal,$krbdefdom,$context,$permission)=@_; |
my $javascript; |
my $javascript; |
# |
# |
if (! exists($env{'form.upfile_associate'})) { |
if (! exists($env{'form.upfile_associate'})) { |
Line 295 sub print_upload_manager_header {
|
Line 297 sub print_upload_manager_header {
|
$password_choice = 'int'; |
$password_choice = 'int'; |
} |
} |
# |
# |
|
my $groupslist; |
|
if ($context eq 'course') { |
|
$groupslist = &get_groupslist(); |
|
} |
my $javascript_validations = |
my $javascript_validations = |
&javascript_validations('auth',$krbdefdom,$password_choice,undef, |
&javascript_validations('upload',$krbdefdom,$password_choice,undef, |
$env{'request.role.domain'}); |
$env{'request.role.domain'},$context, |
|
$permission,$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: <b>[_1]</b>.',$distotal). |
$r->print(&mt('Total number of records found in file: <b>[_1]</b>.',$distotal). |
"<br />\n"); |
"<br />\n"); |
Line 324 sub print_upload_manager_header {
|
Line 331 sub print_upload_manager_header {
|
############################################################### |
############################################################### |
############################################################### |
############################################################### |
sub javascript_validations { |
sub javascript_validations { |
my ($mode,$krbdefdom,$curr_authtype,$curr_authfield,$domain)=@_; |
my ($mode,$krbdefdom,$curr_authtype,$curr_authfield,$domain, |
my $authheader; |
$context,$permission,$groupslist)=@_; |
if ($mode eq 'auth') { |
|
my %param = ( formname => 'studentform', |
my %param = ( |
kerb_def_dom => $krbdefdom, |
|
curr_authtype => $curr_authtype); |
|
$authheader = &Apache::loncommon::authform_header(%param); |
|
} elsif ($mode eq 'createcourse') { |
|
my %param = ( formname => 'ccrs', |
|
kerb_def_dom => $krbdefdom, |
|
curr_authtype => $curr_authtype ); |
|
$authheader = &Apache::loncommon::authform_header(%param); |
|
} elsif ($mode eq 'modifycourse') { |
|
my %param = ( formname => 'cmod', |
|
kerb_def_dom => $krbdefdom, |
kerb_def_dom => $krbdefdom, |
mode => 'modifycourse', |
|
curr_authtype => $curr_authtype, |
curr_authtype => $curr_authtype, |
curr_autharg => $curr_authfield ); |
); |
$authheader = &Apache::loncommon::authform_header(%param); |
if ($mode eq 'createuser') { |
|
$param{'formname'} = 'cu'; |
|
} elsif ($mode eq 'upload') { |
|
$param{'formname'} = 'studentform'; |
|
} elsif ($mode eq 'singlestudent') { |
|
$param{'formname'} = 'cu'; |
|
} elsif ($mode eq 'createcourse') { |
|
$param{'formname'} = 'ccrs'; |
|
} elsif ($mode eq 'modifycourse') { |
|
$param{'formname'} = 'cmod'; |
|
$param{'mode'} = 'modifycourse', |
|
$param{'curr_autharg'} = $curr_authfield; |
|
} |
|
|
|
my ($setsection_call,$setsections_js); |
|
my $finish = " vf.submit();\n"; |
|
if ($mode eq 'upload') { |
|
if (($context eq 'course') || ($context eq 'domain')) { |
|
if ($context eq 'course') { |
|
if ($env{'request.course.sec'} eq '') { |
|
$setsection_call = 'setSections(document.'.$param{'formname'}.');'; |
|
$setsections_js = |
|
&setsections_javascript($param{'formname'},$groupslist, |
|
$mode); |
|
} else { |
|
$setsection_call = "'ok'"; |
|
} |
|
} elsif ($context eq 'domain') { |
|
$setsection_call = 'setCourse()'; |
|
$setsections_js = &dc_setcourse_js($param{'formname'},$mode); |
|
} |
|
$finish = " var checkSec = $setsection_call\n". |
|
" if (checkSec == 'ok') {\n". |
|
" vf.submit();\n". |
|
" }\n"; |
|
} |
} |
} |
|
my $authheader = &Apache::loncommon::authform_header(%param); |
|
|
my %alert = &Apache::lonlocal::texthash |
my %alert = &Apache::lonlocal::texthash |
(username => 'You need to specify the username field.', |
(username => 'You need to specify the username field.', |
Line 358 sub javascript_validations {
|
Line 390 sub javascript_validations {
|
continue => 'Continue adding users?', |
continue => 'Continue adding users?', |
); |
); |
|
|
# my $pjump_def = &Apache::lonhtmlcommon::pjump_javascript_definition(); |
|
my $function_name =(<<END); |
my $function_name =(<<END); |
|
$setsections_js |
|
|
function verify_message (vf,founduname,foundpwd,foundname,foundid,foundsec,foundemail) { |
function verify_message (vf,founduname,foundpwd,foundname,foundid,foundsec,foundemail) { |
END |
END |
my ($authnum,%can_assign) = &Apache::loncommon::get_assignable_auth($domain); |
my ($authnum,%can_assign) = &Apache::loncommon::get_assignable_auth($domain); |
Line 479 END
|
Line 512 END
|
message+= '\\n$alert{'continue'}'; |
message+= '\\n$alert{'continue'}'; |
if (confirm(message)) { |
if (confirm(message)) { |
vf.state.value='enrolling'; |
vf.state.value='enrolling'; |
vf.submit(); |
$finish |
} |
} |
} else { |
} else { |
vf.state.value='enrolling'; |
vf.state.value='enrolling'; |
vf.submit(); |
$finish |
} |
} |
} |
} |
END |
END |
} |
} |
my $result = $function_name; |
my $result = $function_name; |
if ( ($mode eq 'auth') || ($mode eq 'createcourse') || ($mode eq 'modifycourse') ) { |
if ( ($mode eq 'upload') || ($mode eq 'createcourse') || ($mode eq 'modifycourse') ) { |
$result .= $auth_checks; |
$result .= $auth_checks; |
} |
} |
$result .= $optional_checks."\n".$section_checks; |
$result .= $optional_checks."\n".$section_checks; |
if ( ($mode eq 'auth') || ($mode eq 'createcourse') || ($mode eq 'modifycourse') ) { |
if ( ($mode eq 'upload') || ($mode eq 'createcourse') || ($mode eq 'modifycourse') ) { |
$result .= $authheader; |
$result .= $authheader; |
} |
} |
return $result; |
return $result; |
Line 654 ENDPICK
|
Line 687 ENDPICK
|
############################################################### |
############################################################### |
############################################################### |
############################################################### |
sub print_upload_manager_footer { |
sub print_upload_manager_footer { |
my ($r,$i,$keyfields,$defdom,$today,$halfyear,$context)=@_; |
my ($r,$i,$keyfields,$defdom,$today,$halfyear,$context,$permission) = @_; |
my $formname; |
my $form = 'document.studentform'; |
if ($context eq 'course') { |
my $formname = 'studentform'; |
$formname = 'document.studentform'; |
|
} elsif ($context eq 'author') { |
|
$formname = 'document.studentform'; |
|
} elsif ($context eq 'domain') { |
|
$formname = 'document.studentform'; |
|
} |
|
my ($krbdef,$krbdefdom) = |
my ($krbdef,$krbdefdom) = |
&Apache::loncommon::get_kerberos_defaults($defdom); |
&Apache::loncommon::get_kerberos_defaults($defdom); |
my %param = ( formname => $formname, |
my %param = ( formname => $form, |
kerb_def_dom => $krbdefdom, |
kerb_def_dom => $krbdefdom, |
kerb_def_auth => $krbdef |
kerb_def_auth => $krbdef |
); |
); |
Line 677 sub print_upload_manager_footer {
|
Line 704 sub print_upload_manager_footer {
|
my $krbform = &Apache::loncommon::authform_kerberos(%param); |
my $krbform = &Apache::loncommon::authform_kerberos(%param); |
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); |
my $date_table = &date_setting_table(undef,undef,$context,undef, |
|
$formname,$permission); |
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); |
Line 719 sub print_upload_manager_footer {
|
Line 746 sub print_upload_manager_footer {
|
$Str .= '<br /><br /><b>'.&mt('Default role and/or section')."</b><br />\n". |
$Str .= '<br /><br /><b>'.&mt('Default role and/or section')."</b><br />\n". |
&mt('Role and/or section for users without one in the uploaded file.'); |
&mt('Role and/or section for users without one in the uploaded file.'); |
} |
} |
$Str .= '<br /><br />'; |
$Str .= '<br />'; |
my ($options,$cb_script,$coursepick) = &default_role_selector($context,'defaultrole',1); |
if (($context eq 'domain') || ($context eq 'author')) { |
if ($context eq 'domain') { |
my ($options,$cb_script,$coursepick) = &default_role_selector($context,1); |
$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; |
if ($context eq 'domain') { |
} elsif ($context eq 'author') { |
$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 .= $options; |
} elsif ($context eq 'author') { |
|
$Str .= $options; |
|
} |
} else { |
} else { |
$Str .= '<table><tr><td><span class="LC_nobreak"<b>'.&mt('role').': </b>'. |
my ($cnum,$cdom) = &get_course_identity(); |
$options.'</span></td><td> </td><td><span class="LC_nobreak">'. |
my $rowtitle = &mt('section'); |
'<b>'.&mt('section').': </b><input type="text" name="section" value="" size="12" /></span></td></tr></table>'; |
my $secbox = §ion_picker($cdom,$cnum,'Any',$rowtitle, |
} |
$permission,$context,'upload'); |
if ($context eq 'course') { |
$Str .= $secbox."<h3>".&mt('Full Update')."</h3>\n". |
$Str .= "<h3>".&mt('Full Update')."</h3>\n". |
'<p><label><input type="checkbox" name="fullup" value="yes">'. |
'<label><input type="checkbox" name="fullup" value="yes">'. |
' '.&mt('Display students with current/future access, who are not in the uploaded file.').'<br />'.&mt('Students selected from this list can be dropped.'); |
' '.&mt('Full update (also print list of users not enrolled anymore)'). |
|
"</label></p>\n"; |
"</label></p>\n"; |
} |
} |
if ($context eq 'course' || $context eq 'domain') { |
if ($context eq 'course' || $context eq 'domain') { |
Line 771 sub forceid_change {
|
Line 799 sub forceid_change {
|
############################################################### |
############################################################### |
############################################################### |
############################################################### |
sub print_upload_manager_form { |
sub print_upload_manager_form { |
my ($r,$context) = @_; |
my ($r,$context,$permission) = @_; |
my $firstLine; |
my $firstLine; |
my $datatoken; |
my $datatoken; |
if (!$env{'form.datatoken'}) { |
if (!$env{'form.datatoken'}) { |
Line 815 sub print_upload_manager_form {
|
Line 843 sub print_upload_manager_form {
|
my ($krbdef,$krbdefdom) = |
my ($krbdef,$krbdefdom) = |
&Apache::loncommon::get_kerberos_defaults($defdom); |
&Apache::loncommon::get_kerberos_defaults($defdom); |
# |
# |
&print_upload_manager_header($r,$datatoken,$distotal,$krbdefdom,$context); |
&print_upload_manager_header($r,$datatoken,$distotal,$krbdefdom,$context, |
|
$permission); |
my $i; |
my $i; |
my $keyfields; |
my $keyfields; |
if ($total>=0) { |
if ($total>=0) { |
Line 849 sub print_upload_manager_form {
|
Line 878 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); |
$context,$permission); |
} |
} |
|
|
sub setup_date_selectors { |
sub setup_date_selectors { |
my ($starttime,$endtime,$mode,$nolink) = @_; |
my ($starttime,$endtime,$mode,$nolink,$formname) = @_; |
|
if ($formname eq '') { |
|
$formname = 'studentform'; |
|
} |
if (! defined($starttime)) { |
if (! defined($starttime)) { |
$starttime = time; |
$starttime = time; |
unless ($mode eq 'create_enrolldates' || $mode eq 'create_defaultdates') { |
unless ($mode eq 'create_enrolldates' || $mode eq 'create_defaultdates') { |
Line 876 sub setup_date_selectors {
|
Line 908 sub setup_date_selectors {
|
} |
} |
|
|
my $startdateform = |
my $startdateform = |
&Apache::lonhtmlcommon::date_setter('studentform','startdate',$starttime, |
&Apache::lonhtmlcommon::date_setter($formname,'startdate',$starttime, |
undef,undef,undef,undef,undef,undef,undef,$nolink); |
undef,undef,undef,undef,undef,undef,undef,$nolink); |
|
|
my $enddateform = |
my $enddateform = |
&Apache::lonhtmlcommon::date_setter('studentform','enddate',$endtime, |
&Apache::lonhtmlcommon::date_setter($formname,'enddate',$endtime, |
undef,undef,undef,undef,undef,undef,undef,$nolink); |
undef,undef,undef,undef,undef,undef,undef,$nolink); |
|
|
if ($mode eq 'create_enrolldates') { |
if ($mode eq 'create_enrolldates') { |
Line 913 sub get_dates_from_form {
|
Line 945 sub get_dates_from_form {
|
} |
} |
|
|
sub date_setting_table { |
sub date_setting_table { |
my ($starttime,$endtime,$mode,$bulkaction) = @_; |
my ($starttime,$endtime,$mode,$bulkaction,$formname,$permission) = @_; |
my $nolink; |
my $nolink; |
if ($bulkaction) { |
if ($bulkaction) { |
$nolink = 1; |
$nolink = 1; |
} |
} |
my ($startform,$endform) = |
my ($startform,$endform) = |
&setup_date_selectors($starttime,$endtime,$mode,$nolink); |
&setup_date_selectors($starttime,$endtime,$mode,$nolink,$formname); |
my $dateDefault; |
my $dateDefault; |
if ($mode eq 'create_enrolldates' || $mode eq 'create_defaultdates') { |
if ($mode eq 'create_enrolldates' || $mode eq 'create_defaultdates') { |
$dateDefault = ' '; |
$dateDefault = ' '; |
} elsif ($mode ne 'author' && $mode ne 'domain') { |
} elsif ($mode ne 'author' && $mode ne 'domain') { |
if (($bulkaction eq 'reenable') || |
if (($bulkaction eq 'reenable') || |
($bulkaction eq 'activate') || |
($bulkaction eq 'activate') || |
($bulkaction eq 'chgdates')) { |
($bulkaction eq 'chgdates') || |
$dateDefault = '<span class="LC_nobreak">'. |
($env{'form.action'} eq 'upload')) { |
'<label><input type="checkbox" name="makedatesdefault" /> '. |
if ($env{'request.course.sec'} eq '') { |
&mt('make these dates the default for future enrollment'). |
$dateDefault = '<span class="LC_nobreak">'. |
'</label></span>'; |
'<label><input type="checkbox" name="makedatesdefault" /> '. |
|
&mt('make these dates the default access dates for future student enrollment'). |
|
'</label></span>'; |
|
} |
} |
} |
} |
} |
my $perpetual = '<span class="LC_nobreak"><label><input type="checkbox" name="no_end_date"'; |
my $perpetual = '<span class="LC_nobreak"><label><input type="checkbox" name="no_end_date"'; |
Line 950 sub date_setting_table {
|
Line 985 sub date_setting_table {
|
'LC_oddrow_value')."\n". |
'LC_oddrow_value')."\n". |
$endform.' '.$perpetual. |
$endform.' '.$perpetual. |
&Apache::lonhtmlcommon::row_closure(1). |
&Apache::lonhtmlcommon::row_closure(1). |
&Apache::lonhtmlcommon::end_pick_box().'<br />'; |
&Apache::lonhtmlcommon::end_pick_box(); |
if ($dateDefault) { |
if ($dateDefault) { |
$result .= $dateDefault.'<br />'."\n"; |
$result .= $dateDefault.'<br />'."\n"; |
} |
} |
Line 1011 sub default_role_selector {
|
Line 1046 sub default_role_selector {
|
$options .= ' <option value="'.$role.'">'.$plrole.'</option>'; |
$options .= ' <option value="'.$role.'">'.$plrole.'</option>'; |
} |
} |
my $courseform = &Apache::loncommon::selectcourse_link |
my $courseform = &Apache::loncommon::selectcourse_link |
('studentform','defaultcourse','defaultdomain','defaultdesc',"$env{'request.role.domain'}",undef,'Course'); |
('studentform','dccourse','dcdomain','coursedesc',"$env{'request.role.domain'}",undef,'Course'); |
$cb_jscript = |
$cb_jscript = |
&Apache::loncommon::coursebrowser_javascript($env{'request.role.domain'},'defaultsec','studentform'); |
&Apache::loncommon::coursebrowser_javascript($env{'request.role.domain'},'currsec','studentform'); |
$coursepick = &Apache::loncommon::start_data_table(). |
$coursepick = &Apache::loncommon::start_data_table(). |
&Apache::loncommon::start_data_table_header_row(). |
&Apache::loncommon::start_data_table_header_row(). |
'<th>'.$courseform.'</th><th>'.$lt{'rol'}.'</th>'. |
'<th>'.$courseform.'</th><th>'.$lt{'rol'}.'</th>'. |
'<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="defaultdesc" value="" onFocus="this.blur();opencrsbrowser('."'studentform','defcourse','defdomain','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,%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">'. |
$lt{'exs'}.'<br /><select name="defaultsec">'. |
$lt{'exs'}.'<br /><select name="currsec">'. |
' <option value=""><--'.&mt('Pick course first'). |
' <option value=""><--'.&mt('Pick course first'). |
'</select></td>'. |
'</select></td>'. |
'<td> </td>'. |
'<td> </td>'. |
'<td valign="top">'.$lt{'new'}.'<br />'. |
'<td valign="top">'.$lt{'new'}.'<br />'. |
'<input type="text" name="newsec" value="" size="5" />'. |
'<input type="text" name="newsec" value="" size="5" />'. |
'<input type="hidden" name="groups" value="" /></td>'. |
'<input type="hidden" name="groups" value="" />'. |
'</tr></table></td>'. |
'<input type="hidden" name="sections" value="" />'. |
|
'<input type="hidden" name="origdom" value="'. |
|
$env{'request.role.domain'}.'" />'. |
|
'<input type="hidden" name="dccourse" value="" />'. |
|
'<input type="hidden" name="dcdomain" value="" />'. |
|
'</td></tr></table></td>'. |
&Apache::loncommon::end_data_table_row(). |
&Apache::loncommon::end_data_table_row(). |
&Apache::loncommon::end_data_table()."\n". |
&Apache::loncommon::end_data_table()."\n"; |
'<input type="hidden" name="defaultcourse" value="" />'. |
|
'<input type="hidden" name="defaultdomain" value="" />'; |
|
} |
} |
$options .= '</select>'; |
$options .= '</select>'; |
return ($options,$cb_jscript,$coursepick); |
return ($options,$cb_jscript,$coursepick); |
Line 1049 sub default_course_roles {
|
Line 1087 sub default_course_roles {
|
my $custom = 1; |
my $custom = 1; |
my @roles = &course_roles($context,$checkpriv,$custom); |
my @roles = &course_roles($context,$checkpriv,$custom); |
foreach my $role (@roles) { |
foreach my $role (@roles) { |
my $plrole=&Apache::lonnet::plaintext($role); |
if ($role ne 'cr') { |
$output .= ' <option value="'.$role.'">'.$plrole.'</option>'; |
my $plrole=&Apache::lonnet::plaintext($role); |
|
$output .= ' <option value="'.$role.'">'.$plrole.'</option>'; |
|
} |
} |
} |
if (keys(%customroles) > 0) { |
if (keys(%customroles) > 0) { |
my %customroles = &my_custom_roles(); |
if (grep(/^cr$/,@roles)) { |
foreach my $cust (sort(keys(%customroles))) { |
foreach my $cust (sort(keys(%customroles))) { |
my $custrole='cr_cr_'.$env{'user.domain'}. |
my $custrole='cr_'.$env{'user.domain'}. |
'_'.$env{'user.name'}.'_'.$cust; |
'_'.$env{'user.name'}.'_'.$cust; |
$output .= ' <option value="'.$custrole.'">'.$cust.'</option>'; |
$output .= ' <option value="'.$custrole.'">'.$cust.'</option>'; |
|
} |
} |
} |
} |
} |
return $output; |
return $output; |
Line 1108 sub course_roles {
|
Line 1149 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.section'} ne '') { |
if ($role ne 'cc' && $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.section'})) { |
$env{'request.course.sec'})) { |
push(@roles,$role); |
push(@roles,$role); |
} |
} |
} |
} |
Line 1236 sub print_userlist {
|
Line 1277 sub print_userlist {
|
if ($role eq $env{'form.showrole'}) { |
if ($role eq $env{'form.showrole'}) { |
$roleselected = ' selected="selected" '; |
$roleselected = ' selected="selected" '; |
} |
} |
my $plrole=&Apache::lonnet::plaintext($role); |
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 .= '<option value="'.$role.'"'.$roleselected.'>'.$plrole.'</option>'; |
} |
} |
$roleselected = ''; |
$role_select .= '</select>'; |
if ($env{'form.showrole'} eq 'cr') { |
|
$roleselected = ' selected="selected" '; |
|
} |
|
$role_select .= '<option value="cr"'.$roleselected.'>'.&mt('Custom role').'</option>'. |
|
'</select>'; |
|
$r->print('<label>'.&mt('Role: [_1]',$role_select).'</label>'); |
$r->print('<label>'.&mt('Role: [_1]',$role_select).'</label>'); |
} |
} |
if (!(($context eq 'domain') && ($env{'form.roletype'} eq 'course'))) { |
if (!(($context eq 'domain') && ($env{'form.roletype'} eq 'course'))) { |
Line 1275 sub print_userlist {
|
Line 1316 sub print_userlist {
|
if ($context eq 'course') { |
if ($context eq 'course') { |
my $classlist = &Apache::loncoursedata::get_classlist(); |
my $classlist = &Apache::loncoursedata::get_classlist(); |
my $secidx = &Apache::loncoursedata::CL_SECTION(); |
my $secidx = &Apache::loncoursedata::CL_SECTION(); |
|
my $viewablesec = &viewable_section($permission); |
foreach my $student (keys(%{$classlist})) { |
foreach my $student (keys(%{$classlist})) { |
if (exists($permission->{'view_section'})) { |
my $section = $classlist->{$student}[$secidx]; |
if ($classlist->{$student}[$secidx] ne $permission->{'view_section'}) { |
if ($viewablesec ne '') { |
|
if ($section ne $viewablesec) { |
next; |
next; |
} else { |
} else { |
$userlist{$student} = $classlist->{$student}; |
$userlist{$student} = $classlist->{$student}; |
Line 1286 sub print_userlist {
|
Line 1329 sub print_userlist {
|
$userlist{$student} = $classlist->{$student}; |
$userlist{$student} = $classlist->{$student}; |
} |
} |
} |
} |
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); |
my $showroles; |
my $showroles; |
if ($env{'form.showrole'} ne 'Any') { |
if ($env{'form.showrole'} ne 'Any') { |
Line 1294 sub print_userlist {
|
Line 1337 sub print_userlist {
|
} else { |
} else { |
$showroles = undef; |
$showroles = undef; |
} |
} |
|
my $withsec = 1; |
my %advrolehash = &Apache::lonnet::get_my_roles($cnum,$cdom,undef, |
my %advrolehash = &Apache::lonnet::get_my_roles($cnum,$cdom,undef, |
\@statuses,$showroles); |
\@statuses,$showroles,undef,$withsec); |
&gather_userinfo($context,$format,\%userlist,$indexhash,\%userinfo, |
&gather_userinfo($context,$format,\%userlist,$indexhash,\%userinfo, |
\%advrolehash,$permission); |
\%advrolehash,$permission); |
} else { |
} else { |
Line 1327 sub print_userlist {
|
Line 1371 sub print_userlist {
|
} else { |
} else { |
my @possroles; |
my @possroles; |
if ($env{'form.showrole'} eq 'Any') { |
if ($env{'form.showrole'} eq 'Any') { |
my @possroles = &roles_by_context($context); |
@possroles = &roles_by_context('author'); |
} else { |
} else { |
@possroles = ($env{'form.showrole'}); |
@possroles = ($env{'form.showrole'}); |
} |
} |
foreach my $author (sort(keys(%{$dom_roles{$key}}))) { |
foreach my $author (sort(keys(%{$dom_roles{$key}}))) { |
my ($role,$authorname,$authordom) = split(/:/,$author); |
my ($role,$authorname,$authordom) = split(/:/,$author,-1); |
my $extent = '/'.$authordom.'/'.$authorname; |
my $extent = '/'.$authordom.'/'.$authorname; |
%{$coauthors{$extent}} = |
%{$coauthors{$extent}} = |
&Apache::lonnet::get_my_roles($authorname, |
&Apache::lonnet::get_my_roles($authorname, |
Line 1348 sub print_userlist {
|
Line 1392 sub print_userlist {
|
my %courses = &process_coursepick(); |
my %courses = &process_coursepick(); |
my %allusers; |
my %allusers; |
foreach my $cid (keys(%courses)) { |
foreach my $cid (keys(%courses)) { |
my %coursehash = |
|
&Apache::lonnet::coursedescription($cid,{'one_time' => 1}); |
|
my ($cnum,$cdom,$cdesc) = &get_course_identity($cid); |
my ($cnum,$cdom,$cdesc) = &get_course_identity($cid); |
next if ($cnum eq '' || $cdom eq ''); |
next if ($cnum eq '' || $cdom eq ''); |
my $custom = 1; |
my $custom = 1; |
Line 1357 sub print_userlist {
|
Line 1399 sub print_userlist {
|
%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); |
unshift(@roles,'cr'); |
|
} else { |
} else { |
@roles = ($env{'form.showrole'}); |
@roles = ($env{'form.showrole'}); |
} |
} |
Line 1433 sub list_submit_button {
|
Line 1474 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) = @_; |
foreach my $item (keys(%{$rolehash})) { |
foreach my $item (keys(%{$rolehash})) { |
@{$userlist->{$item}} = (); |
|
my %userdata; |
my %userdata; |
if ($context eq 'author' || $context eq 'course') { |
if ($context eq 'author') { |
($userdata{'username'},$userdata{'domain'},$userdata{'role'}) = |
($userdata{'username'},$userdata{'domain'},$userdata{'role'}) = |
split(/:/,$item); |
split(/:/,$item); |
($userdata{'start'},$userdata{'end'})=split(/:/,$rolehash->{$item}); |
($userdata{'start'},$userdata{'end'})=split(/:/,$rolehash->{$item}); |
&build_user_record(\%userdata,$userinfo,$indexhash,$item,$userlist); |
&build_user_record(\%userdata,$userinfo,$indexhash,$item,$userlist); |
|
} elsif ($context eq 'course') { |
|
my $viewablesec = &viewable_section($permission); |
|
($userdata{'username'},$userdata{'domain'},$userdata{'role'}, |
|
$userdata{'section'}) = split(/:/,$item,-1); |
|
($userdata{'start'},$userdata{'end'})=split(/:/,$rolehash->{$item}); |
|
if (($viewablesec ne '') && ($userdata{'section'} ne '')) { |
|
next if ($viewablesec ne $userdata{'section'}); |
|
} |
|
&build_user_record(\%userdata,$userinfo,$indexhash,$item,$userlist); |
} elsif ($context eq 'domain') { |
} elsif ($context eq 'domain') { |
if ($env{'form.roletype'} eq 'domain') { |
if ($env{'form.roletype'} eq 'domain') { |
($userdata{'role'},$userdata{'username'},$userdata{'domain'}) = |
($userdata{'role'},$userdata{'username'},$userdata{'domain'}) = |
Line 1754 sub show_users_list {
|
Line 1803 sub show_users_list {
|
if (!grep(/^\Q$sortby\E$/,@sortable)) { |
if (!grep(/^\Q$sortby\E$/,@sortable)) { |
$sortby = 'username'; |
$sortby = 'username'; |
} |
} |
my $setting = $env{'form.roleaction'}; |
my $setting = $env{'form.roletype'}; |
my ($cid,$cdom,$cnum,$classgroups,$displayphotos,$displayclickers); |
my ($cid,$cdom,$cnum,$classgroups,$displayphotos,$displayclickers); |
if ($context eq 'course') { |
if ($context eq 'course') { |
$cid=$env{'request.course.id'}; |
$cid = $env{'request.course.id'}; |
($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 2423 ENDTWO
|
Line 2472 ENDTWO
|
} |
} |
|
|
sub date_section_selector { |
sub date_section_selector { |
my ($context) = @_; |
my ($context,$permission) = @_; |
my $callingform = $env{'form.callingform'}; |
my $callingform = $env{'form.callingform'}; |
my $formname = 'dateselect'; |
my $formname = 'dateselect'; |
my $groupslist = &get_groupslist(); |
my $groupslist = &get_groupslist(); |
Line 2502 END
|
Line 2551 END
|
$starttime = time; |
$starttime = time; |
} |
} |
$date_items = &date_setting_table($starttime,undef,$context, |
$date_items = &date_setting_table($starttime,undef,$context, |
$env{'form.bulkaction'}); |
$env{'form.bulkaction'},$formname, |
|
$permission); |
} |
} |
$output .= '<h3>'.$headertext.'</h3>'. |
$output .= '<h3>'.$headertext.'</h3>'. |
'<form name="'.$formname.'" method="post">'."\n". |
'<form name="'.$formname.'" method="post">'."\n". |
Line 2536 END
|
Line 2586 END
|
$info = '<input type="hidden" name="retainsec" value="0" />'; |
$info = '<input type="hidden" name="retainsec" value="0" />'; |
} |
} |
my $sections_select .= &course_sections(\%sections_count,$env{'form.showrole'}); |
my $sections_select .= &course_sections(\%sections_count,$env{'form.showrole'}); |
my $secbox = '<p>'.&Apache::lonhtmlcommon::start_pick_box()."\n". |
my $rowtitle = &mt('New section to assign'); |
&Apache::lonhtmlcommon::row_title(&mt('New section to assign'),'LC_oddrow_value')."\n". |
my $secbox = §ion_picker($cdom,$cnum,$env{'form.showrole'},$rowtitle,$permission,$context); |
'<table class="LC_createuser"><tr class="LC_section_row">'."\n". |
|
'<td align="center">'.&mt('Existing sections')."\n". |
|
'<br />'.$sections_select.'</td><td align="center">'. |
|
&mt('New section').'<br />'."\n". |
|
'<input type="text" name="newsec" size="15" />'."\n". |
|
'<input type="hidden" name="sections" value="" />'."\n". |
|
'</td></tr></table>'."\n". |
|
&Apache::lonhtmlcommon::row_closure(1)."\n". |
|
&Apache::lonhtmlcommon::end_pick_box().'</p>'; |
|
$output .= $info.$secbox; |
$output .= $info.$secbox; |
} |
} |
$output .= '<p>'. |
$output .= '<p>'. |
Line 2693 sub results_header_row {
|
Line 2734 sub results_header_row {
|
} |
} |
return $description; |
return $description; |
} |
} |
|
|
|
sub viewable_section { |
|
my ($permission) = @_; |
|
my $viewablesec; |
|
if (ref($permission) eq 'HASH') { |
|
if (exists($permission->{'view_section'})) { |
|
$viewablesec = $permission->{'view_section'}; |
|
} elsif (exists($permission->{'cusr_section'})) { |
|
$viewablesec = $permission->{'cusr_section'}; |
|
} |
|
} |
|
return $viewablesec; |
|
} |
|
|
|
|
################################################# |
################################################# |
################################################# |
################################################# |
Line 2883 sub print_first_users_upload_form {
|
Line 2938 sub print_first_users_upload_form {
|
|
|
# ================================================= Drop/Add from uploaded file |
# ================================================= Drop/Add from uploaded file |
sub upfile_drop_add { |
sub upfile_drop_add { |
my ($r,$context) = @_; |
my ($r,$context,$permission) = @_; |
&Apache::loncommon::load_tmp_file($r); |
&Apache::loncommon::load_tmp_file($r); |
my @userdata=&Apache::loncommon::upfile_record_sep(); |
my @userdata=&Apache::loncommon::upfile_record_sep(); |
if($env{'form.noFirstLine'}){shift(@userdata);} |
if($env{'form.noFirstLine'}){shift(@userdata);} |
Line 3810 sub can_create_user {
|
Line 3865 sub can_create_user {
|
return $cancreate; |
return $cancreate; |
} |
} |
|
|
|
sub can_modify_userinfo { |
|
my ($context,$dom,$fields,$userroles) = @_; |
|
my %domconfig = |
|
&Apache::lonnet::get_dom('configuration',['usermodification'], |
|
$dom); |
|
my %canmodify; |
|
if (ref($fields) eq 'ARRAY') { |
|
foreach my $field (@{$fields}) { |
|
$canmodify{$field} = 0; |
|
if (&Apache::lonnet::allowed('mau',$dom)) { |
|
$canmodify{$field} = 1; |
|
} else { |
|
if (ref($domconfig{'usermodification'}) eq 'HASH') { |
|
if (ref($domconfig{'usermodification'}{$context}) eq 'HASH') { |
|
if (ref($userroles) eq 'ARRAY') { |
|
foreach my $role (@{$userroles}) { |
|
my $testrole; |
|
if ($role =~ /^cr\//) { |
|
$testrole = 'cr'; |
|
} else { |
|
$testrole = $role; |
|
} |
|
if (ref($domconfig{'usermodification'}{$context}{$testrole}) eq 'HASH') { |
|
if ($domconfig{'usermodification'}{$context}{$testrole}{$field}) { |
|
$canmodify{$field} = 1; |
|
last; |
|
} |
|
} |
|
} |
|
} else { |
|
foreach my $key (keys(%{$domconfig{'usermodification'}{$context}})) { |
|
if (ref($domconfig{'usermodification'}{$context}{$key}) eq 'HASH') { |
|
if ($domconfig{'usermodification'}{$context}{$key}{$field}) { |
|
$canmodify{$field} = 1; |
|
last; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} elsif ($context eq 'course') { |
|
if (ref($userroles) eq 'ARRAY') { |
|
if (grep(/^st$/,@{$userroles})) { |
|
$canmodify{$field} = 1; |
|
} |
|
} else { |
|
$canmodify{$field} = 1; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
return %canmodify; |
|
} |
|
|
|
sub check_usertype { |
|
my ($dom,$uname,$rules) = @_; |
|
my $usertype; |
|
if (ref($rules) eq 'HASH') { |
|
my @user_rules = keys(%{$rules}); |
|
if (@user_rules > 0) { |
|
my %rule_check = &Apache::lonnet::inst_rulecheck($dom,$uname,undef,'username',\@user_rules); |
|
if (keys(%rule_check) > 0) { |
|
$usertype = 'unofficial'; |
|
foreach my $item (keys(%rule_check)) { |
|
if ($rule_check{$item}) { |
|
$usertype = 'official'; |
|
last; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
return $usertype; |
|
} |
|
|
sub roles_by_context { |
sub roles_by_context { |
my ($context,$custom) = @_; |
my ($context,$custom) = @_; |
my @allroles; |
my @allroles; |
Line 3919 sub get_course_identity {
|
Line 4050 sub get_course_identity {
|
return ($cnum,$cdom,$cdesc); |
return ($cnum,$cdom,$cdesc); |
} |
} |
|
|
|
sub dc_setcourse_js { |
|
my ($formname,$mode) = @_; |
|
my $dc_setcourse_code; |
|
my $cctext = &Apache::lonnet::plaintext('cc'); |
|
my %alerts = §ioncheck_alerts(); |
|
my $role = 'role'; |
|
if ($mode eq 'upload') { |
|
$role = 'courserole'; |
|
} |
|
$dc_setcourse_code = (<<"SCRIPTTOP"); |
|
function setCourse() { |
|
var course = document.$formname.dccourse.value; |
|
if (course != "") { |
|
if (document.$formname.dcdomain.value != document.$formname.origdom.value) { |
|
alert("$alerts{'curd'}"); |
|
return; |
|
} |
|
var userrole = document.$formname.$role.options[document.$formname.$role.selectedIndex].value |
|
var section=""; |
|
var numsections = 0; |
|
var newsecs = new Array(); |
|
for (var i=0; i<document.$formname.currsec.length; i++) { |
|
if (document.$formname.currsec.options[i].selected == true ) { |
|
if (document.$formname.currsec.options[i].value != "" && document.$formname.currsec.options[i].value != null) { |
|
if (numsections == 0) { |
|
section = document.$formname.currsec.options[i].value |
|
numsections = 1; |
|
} |
|
else { |
|
section = section + "," + document.$formname.currsec.options[i].value |
|
numsections ++; |
|
} |
|
} |
|
} |
|
} |
|
if (document.$formname.newsec.value != "" && document.$formname.newsec.value != null) { |
|
if (numsections == 0) { |
|
section = document.$formname.newsec.value |
|
} |
|
else { |
|
section = section + "," + document.$formname.newsec.value |
|
} |
|
newsecs = document.$formname.newsec.value.split(/,/g); |
|
numsections = numsections + newsecs.length; |
|
} |
|
if ((userrole == 'st') && (numsections > 1)) { |
|
alert("$alerts{'inea'}. $alerts{'youh'} "+numsections+" $alerts{'sect'}.\\n$alerts{'plsm'}.") |
|
return; |
|
} |
|
for (var j=0; j<newsecs.length; j++) { |
|
if ((newsecs[j] == 'all') || (newsecs[j] == 'none')) { |
|
alert("'"+newsecs[j]+"' $alerts{'mayn'}.\\n$alerts{'plsc'}."); |
|
return; |
|
} |
|
if (document.$formname.groups.value != '') { |
|
var groups = document.$formname.groups.value.split(/,/g); |
|
for (var k=0; k<groups.length; k++) { |
|
if (newsecs[j] == groups[k]) { |
|
alert("'"+newsecs[j]+"' $alerts{'mayt'}.\\n$alerts{'secn'}. $alerts{'plsc'}."); |
|
return; |
|
} |
|
} |
|
} |
|
} |
|
if ((userrole == 'cc') && (numsections > 0)) { |
|
alert("$alerts{'secd'} $cctext $alerts{'role'}.\\n$alerts{'accr'}."); |
|
section = ""; |
|
} |
|
SCRIPTTOP |
|
if ($mode ne 'upload') { |
|
$dc_setcourse_code .= (<<"ENDSCRIPT"); |
|
var coursename = "_$env{'request.role.domain'}"+"_"+course+"_"+userrole |
|
var numcourse = getIndex(document.$formname.dccourse); |
|
if (numcourse == "-1") { |
|
alert("$alerts{'thwa'}"); |
|
return; |
|
} |
|
else { |
|
document.$formname.elements[numcourse].name = "act"+coursename; |
|
var numnewsec = getIndex(document.$formname.newsec); |
|
if (numnewsec != "-1") { |
|
document.$formname.elements[numnewsec].name = "sec"+coursename; |
|
document.$formname.elements[numnewsec].value = section; |
|
} |
|
var numstart = getIndex(document.$formname.start); |
|
if (numstart != "-1") { |
|
document.$formname.elements[numstart].name = "start"+coursename; |
|
} |
|
var numend = getIndex(document.$formname.end); |
|
if (numend != "-1") { |
|
document.$formname.elements[numend].name = "end"+coursename |
|
} |
|
} |
|
} |
|
document.$formname.submit(); |
|
} |
|
|
|
ENDSCRIPT |
|
} else { |
|
$dc_setcourse_code .= " |
|
document.$formname.sections.value = section; |
|
} |
|
return 'ok'; |
|
} |
|
"; |
|
} |
|
$dc_setcourse_code .= (<<"ENDSCRIPT"); |
|
|
|
function getIndex(caller) { |
|
for (var i=0;i<document.$formname.elements.length;i++) { |
|
if (document.$formname.elements[i] == caller) { |
|
return i; |
|
} |
|
} |
|
return -1; |
|
} |
|
ENDSCRIPT |
|
} |
|
|
|
sub sectioncheck_alerts { |
|
my %alerts = &Apache::lonlocal::texthash( |
|
curd => 'You must select a course in the current domain', |
|
inea => 'In each course, each user may only have one student role at a time', |
|
youh => 'You had selected', |
|
sect => 'sections', |
|
plsm => 'Please modify your selections so they include no more than one section', |
|
mayn => 'may not be used as the name for a section, as it is a reserved word', |
|
plsc => 'Please choose a different section name', |
|
mayt => 'may not be used as the name for a section, as it is the name of a course group', |
|
secn => 'Section names and group names must be distinct', |
|
secd => 'Section designations do not apply to ', |
|
role => 'roles', |
|
accr => 'role will be added with access to all sections', |
|
thwa => 'There was a problem with your course selection' |
|
); |
|
return %alerts; |
|
} |
|
|
|
|
1; |
1; |