version 1.102, 2009/10/31 14:27:48
|
version 1.119, 2010/05/22 01:11:53
|
Line 91 sub modifyuserrole {
|
Line 91 sub modifyuserrole {
|
if ($setting eq 'course' || $context eq 'course') { |
if ($setting eq 'course' || $context eq 'course') { |
$scope = '/'.$cid; |
$scope = '/'.$cid; |
$scope =~ s/\_/\//g; |
$scope =~ s/\_/\//g; |
if ($role ne 'cc' && $sec ne '') { |
if (($role ne 'cc') && ($role ne 'co') && ($sec ne '')) { |
$scope .='/'.$sec; |
$scope .='/'.$sec; |
} |
} |
} elsif ($context eq 'domain') { |
} elsif ($context eq 'domain') { |
Line 295 sub hidden_input {
|
Line 295 sub hidden_input {
|
} |
} |
|
|
sub print_upload_manager_header { |
sub print_upload_manager_header { |
my ($r,$datatoken,$distotal,$krbdefdom,$context,$permission)=@_; |
my ($r,$datatoken,$distotal,$krbdefdom,$context,$permission,$crstype)=@_; |
my $javascript; |
my $javascript; |
# |
# |
if (! exists($env{'form.upfile_associate'})) { |
if (! exists($env{'form.upfile_associate'})) { |
Line 332 sub print_upload_manager_header {
|
Line 332 sub print_upload_manager_header {
|
my $javascript_validations = |
my $javascript_validations = |
&javascript_validations('upload',$krbdefdom,$password_choice,undef, |
&javascript_validations('upload',$krbdefdom,$password_choice,undef, |
$env{'request.role.domain'},$context, |
$env{'request.role.domain'},$context, |
$groupslist); |
$groupslist,$crstype); |
my $checked=(($env{'form.noFirstLine'})?' checked="checked"':''); |
my $checked=(($env{'form.noFirstLine'})?' checked="checked"':''); |
$r->print('<p>' |
$r->print('<p>' |
.&mt('Total number of records found in file: [_1]' |
.&mt('Total number of records found in file: [_1]' |
Line 365 sub print_upload_manager_header {
|
Line 365 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, |
$context,$groupslist)=@_; |
$context,$groupslist,$crstype)=@_; |
my %param = ( |
my %param = ( |
kerb_def_dom => $krbdefdom, |
kerb_def_dom => $krbdefdom, |
curr_authtype => $curr_authtype, |
curr_authtype => $curr_authtype, |
Line 386 sub javascript_validations {
|
Line 386 sub javascript_validations {
|
if (($context eq 'course') || ($context eq 'domain')) { |
if (($context eq 'course') || ($context eq 'domain')) { |
if ($context eq 'course') { |
if ($context eq 'course') { |
if ($env{'request.course.sec'} eq '') { |
if ($env{'request.course.sec'} eq '') { |
$setsection_call = 'setSections(document.'.$param{'formname'}.');'; |
$setsection_call = 'setSections(document.'.$param{'formname'}.",'$crstype'".');'; |
$setsections_js = |
$setsections_js = |
&setsections_javascript($param{'formname'},$groupslist, |
&setsections_javascript($param{'formname'},$groupslist, |
$mode); |
$mode,'',$crstype); |
} else { |
} else { |
$setsection_call = "'ok'"; |
$setsection_call = "'ok'"; |
} |
} |
Line 830 sub print_upload_manager_footer {
|
Line 830 sub print_upload_manager_footer {
|
.' '.&mt('Add a domain role').'</label>' |
.' '.&mt('Add a domain role').'</label>' |
.' <label>' |
.' <label>' |
.'<input type="radio" name="roleaction" value="course" />' |
.'<input type="radio" name="roleaction" value="course" />' |
.' '.&mt('Add a course role').'</label>' |
.' '.&mt('Add a course/community role').'</label>' |
.'</span>'; |
.'</span>'; |
} elsif ($context eq 'author') { |
} elsif ($context eq 'author') { |
$Str .= &Apache::lonhtmlcommon::row_title( |
$Str .= &Apache::lonhtmlcommon::row_title( |
Line 899 sub print_upload_manager_footer {
|
Line 899 sub print_upload_manager_footer {
|
.'<hr />'; |
.'<hr />'; |
if ($context eq 'course') { |
if ($context eq 'course') { |
$Str .= '<p class="LC_info">' |
$Str .= '<p class="LC_info">' |
.&mt('Note: For large courses, this operation may be time consuming.') |
.&mt('Note: This operation may be time consuming when adding several users.') |
.'</p>'; |
.'</p>'; |
} |
} |
$Str .= '<p><input type="button"' |
$Str .= '<p><input type="button"' |
Line 979 sub print_upload_manager_form {
|
Line 979 sub print_upload_manager_form {
|
&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); |
$permission,$crstype); |
my $i; |
my $i; |
my $keyfields; |
my $keyfields; |
if ($total>=0) { |
if ($total>=0) { |
Line 1176 sub default_role_selector {
|
Line 1176 sub default_role_selector {
|
my %customroles; |
my %customroles; |
my ($options,$coursepick,$cb_jscript); |
my ($options,$coursepick,$cb_jscript); |
if ($context ne 'author') { |
if ($context ne 'author') { |
%customroles = &my_custom_roles(); |
%customroles = &my_custom_roles($crstype); |
} |
} |
|
|
my %lt=&Apache::lonlocal::texthash( |
my %lt=&Apache::lonlocal::texthash( |
Line 1202 sub default_role_selector {
|
Line 1202 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','dccourse','dcdomain','coursedesc',"$env{'request.role.domain'}",undef,'Course'); |
('studentform','dccourse','dcdomain','coursedesc',"$env{'request.role.domain'}",undef,'Course/Community'); |
$cb_jscript = |
$cb_jscript = |
&Apache::loncommon::coursebrowser_javascript($env{'request.role.domain'},'currsec','studentform'); |
&Apache::loncommon::coursebrowser_javascript($env{'request.role.domain'},'currsec','studentform','courserole','Course/Community'); |
$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="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','','','','crstype'".')" /></td>'."\n". |
'<td><select name="courserole">'."\n". |
'<td><select name="courserole">'."\n". |
&default_course_roles($context,$checkpriv,'Course',%customroles)."\n". |
&default_course_roles($context,$checkpriv,'Course',%customroles)."\n". |
'</select></td><td>'. |
'</select></td><td>'. |
Line 1229 sub default_role_selector {
|
Line 1229 sub default_role_selector {
|
$env{'request.role.domain'}.'" />'. |
$env{'request.role.domain'}.'" />'. |
'<input type="hidden" name="dccourse" value="" />'. |
'<input type="hidden" name="dccourse" value="" />'. |
'<input type="hidden" name="dcdomain" value="" />'. |
'<input type="hidden" name="dcdomain" value="" />'. |
|
'<input type="hidden" name="crstype" value="" />'. |
'</td></tr></table></td>'. |
'</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"; |
Line 1349 sub curr_role_permissions {
|
Line 1350 sub curr_role_permissions {
|
# ======================================================= Existing Custom Roles |
# ======================================================= Existing Custom Roles |
|
|
sub my_custom_roles { |
sub my_custom_roles { |
|
my ($crstype) = @_; |
my %returnhash=(); |
my %returnhash=(); |
my %rolehash=&Apache::lonnet::dump('roles'); |
my %rolehash=&Apache::lonnet::dump('roles'); |
foreach my $key (keys %rolehash) { |
foreach my $key (keys(%rolehash)) { |
if ($key=~/^rolesdef\_(\w+)$/) { |
if ($key=~/^rolesdef\_(\w+)$/) { |
|
if ($crstype eq 'Community') { |
|
next if ($rolehash{$key} =~ /bre\&S/); |
|
} |
$returnhash{$1}=$1; |
$returnhash{$1}=$1; |
} |
} |
} |
} |
Line 1441 sub print_userlist {
|
Line 1446 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') && |
$r->print(' '.&list_submit_button(&mt('Update Display')). |
(($env{'form.roletype'} eq 'course') || ($env{'form.roletype'} eq 'community')))) { |
"\n</p>\n"); |
$r->print( |
|
"\n</p>\n" |
|
.'<p>' |
|
.&list_submit_button(&mt('Update Display')) |
|
."</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') && |
if (($context eq 'domain') && |
($env{'form.roletype'} eq 'course') || |
($env{'form.roletype'} eq 'course') || |
($env{'form.roletype'} eq 'community')) { |
($env{'form.roletype'} eq 'community')) { |
Line 1471 sub print_userlist {
|
Line 1481 sub print_userlist {
|
$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'}.'" />'. |
|
&list_submit_button(&mt('Update Display')). |
"\n".'</p><span class="LC_warning">'.$warning.'</span>'."\n"); |
"\n".'</p><span class="LC_warning">'.$warning.'</span>'."\n"); |
if ($env{'form.coursepick'}) { |
$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 1548 sub print_userlist {
|
Line 1564 sub print_userlist {
|
} |
} |
} elsif (($env{'form.roletype'} eq 'course') || |
} elsif (($env{'form.roletype'} eq 'course') || |
($env{'form.roletype'} eq 'community')) { |
($env{'form.roletype'} eq 'community')) { |
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 1676 sub role_filter {
|
Line 1692 sub role_filter {
|
$role_select .= '</select>'; |
$role_select .= '</select>'; |
$output = '<label><span class="LC_nobreak">' |
$output = '<label><span class="LC_nobreak">' |
.&mt('Role: [_1]',$role_select) |
.&mt('Role: [_1]',$role_select) |
.'</span></label>'; |
.'</span></label> '; |
} |
} |
return $output; |
return $output; |
} |
} |
Line 1705 sub section_group_filter {
|
Line 1721 sub section_group_filter {
|
$env{'form.'.$name{$item}} = 'all'; |
$env{'form.'.$name{$item}} = 'all'; |
} |
} |
if ($item eq 'sec') { |
if ($item eq 'sec') { |
if ($env{'form.showrole'} eq 'cc') { |
if (($env{'form.showrole'} eq 'cc') || ($env{'form.showrole'} eq 'co')) { |
$env{'form.'.$name{$item}} = 'none'; |
$env{'form.'.$name{$item}} = 'none'; |
} |
} |
my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum); |
my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum); |
Line 1716 sub section_group_filter {
|
Line 1732 sub section_group_filter {
|
} |
} |
if (@options > 0) { |
if (@options > 0) { |
my $currsel; |
my $currsel; |
$markup = '<select name="'.$name{$item}.'" />'."\n"; |
$markup = '<select name="'.$name{$item}.'">'."\n"; |
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) { |
Line 1731 sub section_group_filter {
|
Line 1747 sub section_group_filter {
|
$markup .= '</option>'."\n"; |
$markup .= '</option>'."\n"; |
} |
} |
$markup .= '</select>'."\n"; |
$markup .= '</select>'."\n"; |
$output .= (' 'x3).'<label>'.$title{$item}.': '.$markup.'</label>'; |
$output .= (' 'x3).'<span class="LC_nobreak">' |
|
.'<label>'.$title{$item}.': '.$markup.'</label>' |
|
.'</span> '; |
} |
} |
} |
} |
return $output; |
return $output; |
Line 1951 sub process_coursepick {
|
Line 1969 sub process_coursepick {
|
my $coursefilter = $env{'form.coursepick'}; |
my $coursefilter = $env{'form.coursepick'}; |
my $cdom = $env{'request.role.domain'}; |
my $cdom = $env{'request.role.domain'}; |
my %courses; |
my %courses; |
|
my $crssrch = 'Course'; |
|
if ($env{'form.roletype'} eq 'community') { |
|
$crssrch = 'Community'; |
|
} |
if ($coursefilter eq 'all') { |
if ($coursefilter eq 'all') { |
%courses = &Apache::lonnet::courseiddump($cdom,'.','.','.','.','.', |
%courses = &Apache::lonnet::courseiddump($cdom,'.','.','.','.','.', |
undef,undef,'Course'); |
undef,undef,$crssrch); |
} elsif ($coursefilter eq 'category') { |
} elsif ($coursefilter eq 'category') { |
my $instcode = &instcode_from_coursefilter(); |
my $instcode = &instcode_from_coursefilter(); |
%courses = &Apache::lonnet::courseiddump($cdom,'.','.',$instcode,'.','.', |
%courses = &Apache::lonnet::courseiddump($cdom,'.','.',$instcode,'.','.', |
undef,undef,'Course'); |
undef,undef,$crssrch); |
} elsif ($coursefilter eq 'specific') { |
} elsif ($coursefilter eq 'specific') { |
if ($env{'form.coursetotal'} > 1) { |
if ($env{'form.coursetotal'} > 1) { |
my @course_ids = split(/&&/,$env{'form.courselist'}); |
my @course_ids = split(/&&/,$env{'form.courselist'}); |
Line 2142 END
|
Line 2164 END
|
} elsif ($context eq 'domain') { |
} elsif ($context eq 'domain') { |
if ($setting eq 'community') { |
if ($setting eq 'community') { |
$crstype = 'Community'; |
$crstype = 'Community'; |
} elsif ($crstype eq 'course') { |
} elsif ($setting eq 'course') { |
$crstype = 'Course'; |
$crstype = 'Course'; |
} |
} |
} |
} |
Line 2293 END
|
Line 2315 END
|
if ($mode eq 'html' || $mode eq 'view' || $mode eq 'autoenroll' || $mode eq 'pickauthor') { |
if ($mode eq 'html' || $mode eq 'view' || $mode eq 'autoenroll' || $mode eq 'pickauthor') { |
if ($mode ne 'autoenroll' && $mode ne 'pickauthor') { |
if ($mode ne 'autoenroll' && $mode ne 'pickauthor') { |
if ($permission->{'cusr'}) { |
if ($permission->{'cusr'}) { |
$actionselect = &select_actions($context,$setting,$statusmode,$formname); |
unless (($context eq 'domain') && |
|
(($setting eq 'course') || ($setting eq 'community'))) { |
|
$actionselect = |
|
&select_actions($context,$setting,$statusmode,$formname); |
|
} |
} |
} |
$r->print(<<END); |
$r->print(<<END); |
<input type="hidden" name="srchby" value="uname" /> |
<input type="hidden" name="srchby" value="uname" /> |
Line 2377 END
|
Line 2403 END
|
if ($env{'form.userwin'}) { |
if ($env{'form.userwin'}) { |
$checkwin = ' checked="checked"'; |
$checkwin = ' checked="checked"'; |
} |
} |
$output .= '</td><td valign="top"><span class="LC_nobreak"><input type="checkbox" name="userwin" value="1"'.$checkwin.' />'.$lt{'owin'}.'</span></td></tr></table></fieldset></div>'; |
$output .= '</td><td valign="top" style="border-left: 1px solid;"><span class="LC_nobreak"><input type="checkbox" name="userwin" value="1"'.$checkwin.' />'.$lt{'owin'}.'</span></td></tr></table></fieldset></div>'; |
} |
} |
$output .= "\n".'<div class="LC_clear_float_footer"> </div>'."\n". |
$output .= "\n".'<div class="LC_clear_float_footer"> </div>'."\n". |
&Apache::loncommon::start_data_table(). |
&Apache::loncommon::start_data_table(). |
Line 2387 END
|
Line 2413 END
|
<th><a href=\"javascript:document.$formname.sortby.value='type';document.$formname.submit();\">$lt{'type'}</a></th> |
<th><a href=\"javascript:document.$formname.sortby.value='type';document.$formname.submit();\">$lt{'type'}</a></th> |
"; |
"; |
} else { |
} else { |
if ($mode eq 'pickauthor') { |
$output .= "\n".'<th> </th>'."\n"; |
$output .= "\n".'<th> </th>'."\n"; |
|
} else { |
|
$output .= "\n".'<th>'.&mt('Count').'</th>'."\n"; |
|
} |
|
if ($actionselect) { |
if ($actionselect) { |
$output .= '<th>'.&mt('Select').'</th>'."\n"; |
$output .= '<th>'.&mt('Select').'</th>'."\n"; |
} |
} |
Line 2446 END
|
Line 2468 END
|
time.'_'.rand(1000000000).'.csv'; |
time.'_'.rand(1000000000).'.csv'; |
unless ($CSVfile = Apache::File->new('>/home/httpd'.$CSVfilename)) { |
unless ($CSVfile = Apache::File->new('>/home/httpd'.$CSVfilename)) { |
$r->log_error("Couldn't open $CSVfilename for output $!"); |
$r->log_error("Couldn't open $CSVfilename for output $!"); |
$r->print(&mt('Problems occurred in writing the CSV file. ' |
$r->print( |
.'This error has been logged. ' |
'<p class="LC_error">' |
.'Please alert your LON-CAPA administrator.')); |
.&mt('Problems occurred in writing the CSV file.') |
|
.' '.&mt('This error has been logged.') |
|
.' '.&mt('Please alert your LON-CAPA administrator.') |
|
.'</p>' |
|
); |
$CSVfile = undef; |
$CSVfile = undef; |
} |
} |
# |
# |
Line 2917 sub print_username_link {
|
Line 2943 sub print_username_link {
|
$output = $in->{'username'}; |
$output = $in->{'username'}; |
} else { |
} else { |
$output = '<a href="javascript:username_display_launch('. |
$output = '<a href="javascript:username_display_launch('. |
"'$in->{'username'}','$in->{'domain'}'".')" />'. |
"'$in->{'username'}','$in->{'domain'}'".')">'. |
$in->{'username'}.'</a>'; |
$in->{'username'}.'</a>'; |
} |
} |
return $output; |
return $output; |
Line 3090 END
|
Line 3116 END
|
} else { |
} else { |
opener.document.$callingform.retainsec.value = formname.retainsec.value; |
opener.document.$callingform.retainsec.value = formname.retainsec.value; |
} |
} |
setSections(formname); |
setSections(formname,'$crstype'); |
if (seccheck == 'ok') { |
if (seccheck == 'ok') { |
opener.document.$callingform.newsecs.value = formname.sections.value; |
opener.document.$callingform.newsecs.value = formname.sections.value; |
} |
} |
Line 3147 ENDJS
|
Line 3173 ENDJS
|
my %lt = &Apache::lonlocal::texthash ( |
my %lt = &Apache::lonlocal::texthash ( |
chac => 'Access dates to apply for selected users', |
chac => 'Access dates to apply for selected users', |
chse => 'Changes in section affiliation to apply to selected users', |
chse => 'Changes in section affiliation to apply to selected users', |
fors => 'For student roles changing the section, will result in a section switch as students may only be in one section of a course at a time.', |
fors => 'For student roles, changing the section will result in a section switch as students may only be in one section of a course at a time.', |
forn => 'For a role in a course that is not a student role, a user may have roles in more than one section of a course at a time.', |
forn => 'For a course role that is not "student", users may have roles in more than one section at a time.', |
reta => "Retain each user's current section affiliations?", |
reta => "Retain each user's current section affiliations?", |
dnap => '(Does not apply to student roles).', |
dnap => '(Does not apply to student roles).', |
); |
); |
my ($date_items,$headertext); |
my ($date_items,$headertext); |
if ($env{'form.bulkaction'} eq 'chgsec') { |
if ($env{'form.bulkaction'} eq 'chgsec') { |
Line 3167 ENDJS
|
Line 3193 ENDJS
|
$permission,$crstype); |
$permission,$crstype); |
} |
} |
$output .= '<h3>'.$headertext.'</h3>'. |
$output .= '<h3>'.$headertext.'</h3>'. |
'<form name="'.$formname.'" method="post">'."\n". |
'<form name="'.$formname.'" method="post" action="">'."\n". |
$date_items; |
$date_items; |
if ($context eq 'course' && $env{'form.bulkaction'} eq 'chgsec') { |
if ($context eq 'course' && $env{'form.bulkaction'} eq 'chgsec') { |
my ($cnum,$cdom) = &get_course_identity(); |
my ($cnum,$cdom) = &get_course_identity(); |
my $crstype = &Apache::loncommon::course_type(); |
if ($crstype eq 'Community') { |
|
$lt{'fors'} = &mt('For member roles, changing the section will result in a section switch, as members may only be in one section of a community at a time.'); |
|
$lt{'forn'} = &mt('For a community role that is not "member", users may have roles in more than one section at a time.'); |
|
$lt{'dnap'} = &mt('(Does not apply to member roles).'); |
|
} |
my $info; |
my $info; |
if ($env{'form.showrole'} eq 'st') { |
if ($env{'form.showrole'} eq 'st') { |
$output .= '<p>'.$lt{'fors'}.'</p>'; |
$output .= '<p>'.$lt{'fors'}.'</p>'; |
Line 3210 sub section_picker {
|
Line 3240 sub section_picker {
|
my ($cdom,$cnum,$role,$rowtitle,$permission,$context,$mode,$crstype) = @_; |
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 = '<div>'.&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,$crstype); |
&default_role_selector($context,1,$crstype); |
Line 3223 sub section_picker {
|
Line 3253 sub section_picker {
|
'<td align="center">'.&mt('Existing sections')."\n". |
'<td align="center">'.&mt('Existing sections')."\n". |
'<br />'.$sections_select.'</td><td align="center">'. |
'<br />'.$sections_select.'</td><td align="center">'. |
&mt('New section').'<br />'."\n". |
&mt('New section').'<br />'."\n". |
'<input type="text" name="newsec" size="15" />'."\n". |
'<input type="text" name="newsec" size="15" value="" />'."\n". |
'<input type="hidden" name="sections" value="" />'."\n". |
'<input type="hidden" name="sections" value="" />'."\n". |
'</td></tr></table>'."\n"; |
'</td></tr></table>'."\n"; |
} else { |
} else { |
Line 3232 sub section_picker {
|
Line 3262 sub section_picker {
|
$env{'request.course.sec'}; |
$env{'request.course.sec'}; |
} |
} |
$secbox .= &Apache::lonhtmlcommon::row_closure(1)."\n". |
$secbox .= &Apache::lonhtmlcommon::row_closure(1)."\n". |
&Apache::lonhtmlcommon::end_pick_box().'</p>'; |
&Apache::lonhtmlcommon::end_pick_box().'</div>'; |
return $secbox; |
return $secbox; |
} |
} |
|
|
Line 3288 sub results_header_row {
|
Line 3318 sub results_header_row {
|
if ($viewablesec ne '') { |
if ($viewablesec ne '') { |
if ($env{'form.showrole'} eq 'st') { |
if ($env{'form.showrole'} eq 'st') { |
$constraint = &mt('only users in section "[_1]"',$viewablesec); |
$constraint = &mt('only users in section "[_1]"',$viewablesec); |
} elsif ($env{'form.showrole'} ne 'cc') { |
} elsif (($env{'form.showrole'} ne 'cc') && ($env{'form.showrole'} ne 'co')) { |
$constraint = &mt('only users affiliated with no section or section "[_1]"',$viewablesec); |
$constraint = &mt('only users affiliated with no section or section "[_1]"',$viewablesec); |
} |
} |
if (($env{'form.grpfilter'} ne 'all') && ($env{'form.grpfilter'} ne '')) { |
if (($env{'form.grpfilter'} ne 'all') && ($env{'form.grpfilter'} ne '')) { |
Line 3373 sub results_header_row {
|
Line 3403 sub results_header_row {
|
if ($rolefilter eq 'Any') { |
if ($rolefilter eq 'Any') { |
$description .= &mt('All users with co-author roles in domain',$showfilter); |
$description .= &mt('All users with co-author roles in domain',$showfilter); |
} else { |
} else { |
$description .= &mt('All co-authors in domain with [_1] roles',$rolefilter); |
$description .= &mt('All co-authors in domain with [_1] roles',$rolefilter); |
} |
} |
} |
} |
} elsif (($env{'form.roletype'} eq 'course') || |
} elsif (($env{'form.roletype'} eq 'course') || |
Line 3633 sub print_first_users_upload_form {
|
Line 3663 sub print_first_users_upload_form {
|
$str .= '<h2>'.&mt('Upload a file containing information about users').'</h2>'."\n"; |
$str .= '<h2>'.&mt('Upload a file containing information about users').'</h2>'."\n"; |
|
|
# Excel and CSV Help |
# Excel and CSV Help |
$str .= '<p>' |
$str .= '<div class="LC_left_float">' |
.&Apache::loncommon::help_open_topic("Course_Create_Class_List", |
.&Apache::loncommon::help_open_topic("Course_Create_Class_List", |
&mt("How do I create a users list from a spreadsheet")) |
&mt("How do I create a users list from a spreadsheet")) |
."<br />\n" |
.'</div><div class="LC_left_float">'."\n" |
.&Apache::loncommon::help_open_topic("Course_Convert_To_CSV", |
.&Apache::loncommon::help_open_topic("Course_Convert_To_CSV", |
&mt("How do I create a CSV file from a spreadsheet")) |
&mt("How do I create a CSV file from a spreadsheet")) |
."</p>\n"; |
.'</div><br clear="all" />'."\n"; |
|
|
$str .= &Apache::lonhtmlcommon::start_pick_box() |
$str .= &Apache::lonhtmlcommon::start_pick_box() |
.&Apache::lonhtmlcommon::row_title(&mt('File')) |
.&Apache::lonhtmlcommon::row_title(&mt('File')); |
.'<p class="LC_info">'."\n" |
if (&Apache::lonlocal::current_language() ne 'en') { |
.&mt('Please upload an UTF8 encoded file to ensure a correct character encoding in your classlist.')."\n" |
if ($context eq 'course') { |
.'</p>'."\n" |
$str .= '<p class="LC_info">'."\n" |
.&Apache::loncommon::upfile_select_html() |
.&mt('Please upload an UTF8 encoded file to ensure a correct character encoding in your classlist.')."\n" |
|
.'</p>'."\n"; |
|
} |
|
} |
|
$str .= &Apache::loncommon::upfile_select_html() |
.&Apache::lonhtmlcommon::row_closure() |
.&Apache::lonhtmlcommon::row_closure() |
.&Apache::lonhtmlcommon::row_title( |
.&Apache::lonhtmlcommon::row_title( |
'<label for="noFirstLine">' |
'<label for="noFirstLine">' |
Line 3660 sub print_first_users_upload_form {
|
Line 3693 sub print_first_users_upload_form {
|
.'<input type="submit" name="fileupload" value="'.&mt('Next').'" />' |
.'<input type="submit" name="fileupload" value="'.&mt('Next').'" />' |
.'</p>'; |
.'</p>'; |
|
|
$str .= &Apache::loncommon::end_page(); |
|
|
|
$r->print($str); |
$r->print($str); |
return; |
return; |
} |
} |
Line 3890 sub upfile_drop_add {
|
Line 3921 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($crstype); |
my @permitted_roles = |
my @permitted_roles = |
&roles_on_upload($context,$setting,$crstype,%customroles); |
&roles_on_upload($context,$setting,$crstype,%customroles); |
# Get new users list |
# Get new users list |
Line 4134 sub upfile_drop_add {
|
Line 4165 sub upfile_drop_add {
|
$role = 'cr_'.$env{'user.domain'}.'_'. |
$role = 'cr_'.$env{'user.domain'}.'_'. |
$env{'user.name'}.'_'.$role; |
$env{'user.name'}.'_'.$role; |
} |
} |
if ($role ne 'cc') { |
if (($role ne 'cc') && ($role ne 'co')) { |
if (@secs > 1) { |
if (@secs > 1) { |
$multiple = 1; |
$multiple = 1; |
foreach my $sec (@secs) { |
foreach my $sec (@secs) { |
Line 4361 sub print_drop_menu {
|
Line 4392 sub print_drop_menu {
|
# ================================================================== Phase four |
# ================================================================== Phase four |
|
|
sub update_user_list { |
sub update_user_list { |
my ($r,$context,$setting,$choice) = @_; |
my ($r,$context,$setting,$choice,$crstype) = @_; |
my $now = time; |
my $now = time; |
my $count=0; |
my $count=0; |
my $crstype; |
|
if ($context eq 'course') { |
if ($context eq 'course') { |
$crstype = &Apache::loncommon::course_type(); |
$crstype = &Apache::loncommon::course_type(); |
} |
} |
Line 4379 sub update_user_list {
|
Line 4409 sub update_user_list {
|
'reenable' => 'Re-enabled', |
'reenable' => 'Re-enabled', |
'activate' => 'Activated', |
'activate' => 'Activated', |
'chgdates' => 'Changed Access Dates for', |
'chgdates' => 'Changed Access Dates for', |
'chgsec' => 'Changed section for', |
'chgsec' => 'Changed section(s) for', |
'drop' => 'Dropped', |
'drop' => 'Dropped', |
}, |
}, |
error => {'revoke' => 'revoking', |
error => {'revoke' => 'revoking', |
Line 4396 sub update_user_list {
|
Line 4426 sub update_user_list {
|
($startdate,$enddate) = &get_dates_from_form(); |
($startdate,$enddate) = &get_dates_from_form(); |
} |
} |
foreach my $item (@changelist) { |
foreach my $item (@changelist) { |
my ($role,$uname,$udom,$cid,$sec,$scope,$result,$type,$locktype,@sections, |
my ($role,$uname,$udom,$cid,$sec,$scope,$result,$type,$locktype, |
$scopestem); |
@sections,$scopestem,$singlesec,$showsecs,$warn_singlesec, |
|
$nothingtodo,$keepnosection); |
if ($choice eq 'drop') { |
if ($choice eq 'drop') { |
($uname,$udom,$sec) = split(/:/,$item,-1); |
($uname,$udom,$sec) = split(/:/,$item,-1); |
$role = 'st'; |
$role = 'st'; |
Line 4495 sub update_user_list {
|
Line 4526 sub update_user_list {
|
} |
} |
} elsif ($choice eq 'chgsec') { |
} elsif ($choice eq 'chgsec') { |
my (@newsecs,$revresult,$nochg,@retained); |
my (@newsecs,$revresult,$nochg,@retained); |
if ($role ne 'cc') { |
if (($role ne 'cc') && ($role ne 'co')) { |
@newsecs = split(/,/,$env{'form.newsecs'}); |
my @secs = sort(split(/,/,$env{'form.newsecs'})); |
|
if (@secs) { |
|
my %curr_groups = &Apache::longroup::coursegroups(); |
|
foreach my $sec (@secs) { |
|
next if (($sec =~ /\W/) || ($sec eq 'none') || |
|
(exists($curr_groups{$sec}))); |
|
push(@newsecs,$sec); |
|
} |
|
} |
} |
} |
# remove existing section if not to be retained. |
# remove existing section if not to be retained. |
if (!$env{'form.retainsec'}) { |
if (!$env{'form.retainsec'} || ($role eq 'st')) { |
if ($sec eq '') { |
if ($sec eq '') { |
if (@newsecs == 0) { |
if (@newsecs == 0) { |
$result = &mt('No change in section assignment (none)'); |
$result = 'ok'; |
$nochg = 1; |
$nochg = 1; |
|
$nothingtodo = 1; |
} else { |
} else { |
$revresult = |
$revresult = |
&Apache::lonnet::revokerole($udom,$uname, |
&Apache::lonnet::revokerole($udom,$uname, |
Line 4530 sub update_user_list {
|
Line 4570 sub update_user_list {
|
} else { |
} else { |
if ($sec eq '') { |
if ($sec eq '') { |
$nochg = 1; |
$nochg = 1; |
} else { |
$keepnosection = 1; |
|
} else { |
push(@retained,$sec); |
push(@retained,$sec); |
} |
} |
} |
} |
# add new sections |
# add new sections |
|
my (@diffs,@shownew); |
|
if (@retained) { |
|
@diffs = &Apache::loncommon::compare_arrays(\@retained,\@newsecs); |
|
} else { |
|
@diffs = @newsecs; |
|
} |
if (@newsecs == 0) { |
if (@newsecs == 0) { |
if (!$nochg) { |
if ($nochg) { |
|
$result = 'ok'; |
|
$nothingtodo = 1; |
|
} else { |
if ($role eq 'st') { |
if ($role eq 'st') { |
$result = |
$result = |
&Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,undef,$end,$start,$type,$locktype,$cid,'',$context); |
&Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,undef,$end,$start,$type,$locktype,$cid,'',$context); |
Line 4545 sub update_user_list {
|
Line 4595 sub update_user_list {
|
$result = &Apache::lonnet::assignrole($udom,$uname,$newscope,$role,$end,$start,'','',$context); |
$result = &Apache::lonnet::assignrole($udom,$uname,$newscope,$role,$end,$start,'','',$context); |
} |
} |
} |
} |
|
$showsecs = &mt('No section'); |
|
} elsif (@diffs == 0) { |
|
$result = 'ok'; |
|
$nothingtodo = 1; |
} else { |
} else { |
foreach my $newsec (@newsecs) { |
foreach my $newsec (@newsecs) { |
if (!grep(/^\Q$newsec\E$/,@retained)) { |
if (!grep(/^\Q$newsec\E$/,@retained)) { |
if ($role eq 'st') { |
if ($role eq 'st') { |
$result = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$newsec,$end,$start,$type,$locktype,$cid,'',$context); |
$result = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$newsec,$end,$start,$type,$locktype,$cid,'',$context); |
|
if (@newsecs > 1) { |
|
my $showsingle; |
|
if ($newsec eq '') { |
|
$showsingle = &mt('No section'); |
|
} else { |
|
$showsingle = $newsec; |
|
} |
|
if ($crstype eq 'Community') { |
|
$warn_singlesec = &mt('Although more than one section was indicated, a role was only added for the first section - [_1], as each community member may only be in one section at a time.','<i>'.$showsingle.'</i>'); |
|
} else { |
|
$warn_singlesec = &mt('Although more than one section was indicated, a role was only added for the first section - [_1], as each student may only be in one section of a course at a time.','<i>'.$showsingle.'</i>'); |
|
} |
|
$showsecs = $showsingle; |
|
last; |
|
} else { |
|
if ($newsec eq '') { |
|
$showsecs = &mt('No section'); |
|
} else { |
|
$showsecs = $newsec; |
|
} |
|
} |
} else { |
} else { |
my $newscope = $scopestem; |
my $newscope = $scopestem; |
if ($newsec ne '') { |
if ($newsec ne '') { |
$newscope .= '/'.$newsec; |
$newscope .= '/'.$newsec; |
|
push(@shownew,$newsec); |
} |
} |
$result = &Apache::lonnet::assignrole($udom,$uname, |
$result = &Apache::lonnet::assignrole($udom,$uname, |
$newscope,$role,$end,$start); |
$newscope,$role,$end,$start); |
|
|
} |
} |
} |
} |
} |
} |
} |
} |
|
unless ($role eq 'st') { |
|
unless ($showsecs) { |
|
my @tolist = sort(@shownew,@retained); |
|
if ($keepnosection) { |
|
push(@tolist,&mt('No section')); |
|
} |
|
$showsecs = join(', ',@tolist); |
|
} |
|
} |
} |
} |
} |
} |
my $extent = $scope; |
my $extent = $scope; |
Line 4571 sub update_user_list {
|
Line 4657 sub update_user_list {
|
} |
} |
} |
} |
if ($result eq 'ok' || $result eq 'ok:') { |
if ($result eq 'ok' || $result eq 'ok:') { |
$r->print(&mt("$result_text{'ok'}{$choice} role of '[_1]' in [_2] for [_3]", |
my $dates; |
$plrole,$extent,$uname.':'.$udom).'<br />'); |
if (($choice eq 'chgsec') || ($choice eq 'chgdates')) { |
$count++; |
$dates = &dates_feedback($start,$end,$now); |
|
} |
|
if ($choice eq 'chgsec') { |
|
if ($nothingtodo) { |
|
$r->print(&mt("Section assignment for role of '[_1]' in [_2] for '[_3]' unchanged.",$plrole,$extent,'<i>'. |
|
&Apache::loncommon::plainname($uname,$udom). |
|
'</i>').' '); |
|
if ($sec eq '') { |
|
$r->print(&mt('[_1]No section[_2] - [_3]','<b>','</b>',$dates)); |
|
} else { |
|
$r->print(&mt('Section(s): [_1] - [_2]', |
|
'<b>'.$showsecs.'</b>',$dates)); |
|
} |
|
$r->print('<br />'); |
|
} else { |
|
$r->print(&mt("$result_text{'ok'}{$choice} role of '[_1]' in [_2] for '[_3]' to [_4] - [_5]",$plrole,$extent, |
|
'<i>'.&Apache::loncommon::plainname($uname,$udom).'</i>', |
|
'<b>'.$showsecs.'</b>',$dates).'<br />'); |
|
$count ++; |
|
} |
|
if ($warn_singlesec) { |
|
$r->print('<div class="LC_warning">'.$warn_singlesec.'</div>'); |
|
} |
|
} elsif ($choice eq 'chgdates') { |
|
$r->print(&mt("$result_text{'ok'}{$choice} role of '[_1]' in [_2] for '[_3]' - [_4]",$plrole,$extent, |
|
'<i>'.&Apache::loncommon::plainname($uname.':'.$udom).'</i>', |
|
$dates).'<br />'); |
|
$count ++; |
|
} else { |
|
$r->print(&mt("$result_text{'ok'}{$choice} role of '[_1]' in [_2] for '[_3]'.",$plrole,$extent, |
|
'<i>'.&Apache::loncommon::plainname($uname.':'.$udom).'</i>'). |
|
'<br />'); |
|
$count ++; |
|
} |
} else { |
} else { |
$r->print( |
$r->print( |
&mt("Error $result_text{'error'}{$choice} [_1] in [_2] for [_3]: [_4].", |
&mt("Error $result_text{'error'}{$choice} [_1] in [_2] for '[_3]': [_4].", |
$plrole,$extent,$uname.':'.$udom,$result).'<br />'); |
$plrole,$extent, |
|
'<i>'.&Apache::loncommon::plainname($uname.':'.$udom).'</i>', |
|
$result).'<br />'); |
} |
} |
} |
} |
$r->print('<form name="studentform" method="post" action="/adm/createuser">'."\n"); |
$r->print('<form name="studentform" method="post" action="/adm/createuser">'."\n"); |
Line 4593 sub update_user_list {
|
Line 4714 sub update_user_list {
|
} |
} |
} |
} |
} |
} |
$r->print('<p><b>'.&mt("$result_text{'ok'}{$choice} role(s) for [quant,_1,user,users,no users].",$count).'</b></p>'); |
$r->print('<p><b>'.&mt("$result_text{'ok'}{$choice} for [quant,_1,user role,user roles,no user roles].",$count).'</b></p>'); |
if ($count > 0) { |
if ($count > 0) { |
if ($choice eq 'revoke' || $choice eq 'drop') { |
if ($choice eq 'revoke' || $choice eq 'drop') { |
$r->print('<p>'.&mt('Re-enabling will re-activate data for the role.').'</p>'); |
$r->print('<p>'.&mt('Re-enabling will re-activate data for the role.').'</p>'); |
Line 4613 sub update_user_list {
|
Line 4734 sub update_user_list {
|
$r->print('<a href="javascript:document.studentform.submit()">'.$linktext.'</a></form>'."\n"); |
$r->print('<a href="javascript:document.studentform.submit()">'.$linktext.'</a></form>'."\n"); |
} |
} |
|
|
|
sub dates_feedback { |
|
my ($start,$end,$now) = @_; |
|
my $dates; |
|
if ($start < $now) { |
|
if ($end == 0) { |
|
$dates .= &mt('role(s) active now; no end date'); |
|
} elsif ($end > $now) { |
|
$dates = &mt('role(s) active now; ends [_1].',&Apache::lonlocal::locallocaltime($end)); |
|
} else { |
|
$dates = &mt('role(s) expired: [_1].',&Apache::lonlocal::locallocaltime($end)); |
|
} |
|
} else { |
|
if ($end == 0 || $end > $now) { |
|
$dates = &mt('future role(s); starts: [_1].',&Apache::lonlocal::locallocaltime($start)); |
|
} else { |
|
$dates = &mt('role(s) expired: [_1].',&Apache::lonlocal::locallocaltime($end)); |
|
} |
|
} |
|
return $dates; |
|
} |
|
|
sub classlist_drop { |
sub classlist_drop { |
my ($scope,$uname,$udom,$now) = @_; |
my ($scope,$uname,$udom,$now) = @_; |
my ($cdom,$cnum) = ($scope=~m{^/($match_domain)/($match_courseid)}); |
my ($cdom,$cnum) = ($scope=~m{^/($match_domain)/($match_courseid)}); |
Line 4750 sub get_groupslist {
|
Line 4892 sub get_groupslist {
|
} |
} |
|
|
sub setsections_javascript { |
sub setsections_javascript { |
my ($formname,$groupslist,$mode,$checkauth) = @_; |
my ($formname,$groupslist,$mode,$checkauth,$crstype) = @_; |
my ($checkincluded,$finish,$rolecode,$setsection_js); |
my ($checkincluded,$finish,$rolecode,$setsection_js); |
if ($mode eq 'upload') { |
if ($mode eq 'upload') { |
$checkincluded = 'formname.name == "'.$formname.'"'; |
$checkincluded = 'formname.name == "'.$formname.'"'; |
Line 4789 sub setsections_javascript {
|
Line 4931 sub setsections_javascript {
|
} |
} |
my %alerts = &Apache::lonlocal::texthash( |
my %alerts = &Apache::lonlocal::texthash( |
secd => 'Section designations do not apply to Course Coordinator roles.', |
secd => 'Section designations do not apply to Course Coordinator roles.', |
|
sedn => 'Section designations do not apply to Coordinator roles.', |
accr => 'A course coordinator role will be added with access to all sections.', |
accr => 'A course coordinator role will be added with access to all sections.', |
|
acor => 'A coordinator role will be added with access to all sections', |
inea => 'In each course, each user may only have one student role at a time.', |
inea => 'In each course, each user may only have one student role at a time.', |
|
inec => 'In each community, each user may only have one member role at a time.', |
youh => 'You had selected ', |
youh => 'You had selected ', |
secs => 'sections.', |
secs => 'sections.', |
plmo => 'Please modify your selections so they include no more than one section.', |
plmo => 'Please modify your selections so they include no more than one section.', |
Line 4798 sub setsections_javascript {
|
Line 4943 sub setsections_javascript {
|
plch => 'Please choose a different section name.', |
plch => 'Please choose a different section name.', |
mnot => 'may not be used as a section name, as it is the name of a course group.', |
mnot => 'may not be used as a section name, as it is the name of a course group.', |
secn => 'Section names and group names must be distinct. Please choose a different section name.', |
secn => 'Section names and group names must be distinct. Please choose a different section name.', |
|
nonw => 'Section names may only contain letters or numbers.', |
); |
); |
$setsection_js .= <<"ENDSECCODE"; |
$setsection_js .= <<"ENDSECCODE"; |
|
|
function setSections(formname) { |
function setSections(formname,crstype) { |
var re1 = /^currsec_/; |
var re1 = /^currsec_/; |
|
var re2 =/\\W/; |
|
var trimleading = /^\\s+/; |
|
var trimtrailing = /\\s+\$/; |
var groups = new Array($groupslist); |
var groups = new Array($groupslist); |
for (var i=0;i<formname.elements.length;i++) { |
for (var i=0;i<formname.elements.length;i++) { |
var str = formname.elements[i].name; |
var str = formname.elements[i].name; |
var checkcurr = str.match(re1); |
var checkcurr = str.match(re1); |
if (checkcurr != null) { |
if (checkcurr != null) { |
|
var num = i; |
if ($checkincluded) { |
if ($checkincluded) { |
$rolecode |
$rolecode |
if (role == 'cc') { |
if (role == 'cc' || role == 'co') { |
alert("$alerts{'secd'}\\n$alerts{'accr'}"); |
if (role == 'cc') { |
} |
alert("$alerts{'secd'}\\n$alerts{'accr'}"); |
else { |
} else { |
|
alert("$alerts{'sedn'}\\n$alerts{'acor'}"); |
|
} |
|
} else { |
var sections = ''; |
var sections = ''; |
var numsec = 0; |
var numsec = 0; |
var sections; |
var fromexisting = new Array(); |
for (var j=0; j<formname.elements[i].length; j++) { |
for (var j=0; j<formname.elements[num].length; j++) { |
if (formname.elements[i].options[j].selected == true ) { |
if (formname.elements[num].options[j].selected == true ) { |
if (formname.elements[i].options[j].value != "") { |
var addsec = formname.elements[num].options[j].value; |
|
if ((addsec != "") && (addsec != null)) { |
|
fromexisting.push(addsec); |
if (numsec == 0) { |
if (numsec == 0) { |
if (formname.elements[i].options[j].value != "") { |
sections = addsec; |
sections = formname.elements[i].options[j].value; |
} else { |
numsec ++; |
sections = sections + "," + addsec; |
} |
|
} |
|
else { |
|
sections = sections + "," + formname.elements[i].options[j].value |
|
numsec ++; |
|
} |
} |
|
numsec ++; |
} |
} |
} |
} |
} |
} |
if (numsec > 0) { |
var newsecs = formname.elements[num+1].value; |
if (formname.elements[i+1].value != "" && formname.elements[i+1].value != null) { |
var validsecs = new Array(); |
sections = sections + "," + formname.elements[i+1].value; |
var validsecstr = ''; |
} |
var badsecs = new Array(); |
} |
|
else { |
|
sections = formname.elements[i+1].value; |
|
} |
|
var newsecs = formname.elements[i+1].value; |
|
var numsplit; |
|
if (newsecs != null && newsecs != "") { |
if (newsecs != null && newsecs != "") { |
numsplit = newsecs.split(/,/g); |
var numsplit; |
numsec = numsec + numsplit.length; |
if (newsecs.indexOf(',') == -1) { |
|
numsplit = new Array(newsecs); |
|
} else { |
|
numsplit = newsecs.split(/,/g); |
|
} |
|
for (var m=0; m<numsplit.length; m++) { |
|
var newsec = numsplit[m]; |
|
newsec = newsec.replace(trimleading,''); |
|
newsec = newsec.replace(trimtrailing,''); |
|
if (re2.test(newsec) == true) { |
|
badsecs.push(newsec); |
|
} else { |
|
if (newsec != '') { |
|
var isnew = 1; |
|
if (fromexisting != null) { |
|
for (var n=0; n<fromexisting.length; n++) { |
|
if (newsec == fromexisting[n]) { |
|
isnew = 0; |
|
} |
|
} |
|
} |
|
if (isnew == 1) { |
|
validsecs.push(newsec); |
|
} |
|
} |
|
} |
|
} |
|
if (badsecs.length > 0) { |
|
alert("$alerts{'nonw'}\\n$alerts{'plch'}"); |
|
return; |
|
} |
|
numsec = numsec + validsecs.length; |
} |
} |
|
|
if ((role == 'st') && (numsec > 1)) { |
if ((role == 'st') && (numsec > 1)) { |
alert("$alerts{'inea'} $alerts{'youh'} "+numsec+" $alerts{'secs'}\\n$alerts{'plmo'}") |
if (crstype == 'Community') { |
|
alert("$alerts{'inea'} $alerts{'youh'} "+numsec+" $alerts{'secs'}\\n$alerts{'plmo'}"); |
|
} else { |
|
alert("$alerts{'inco'} $alerts{'youh'} "+numsec+" $alerts{'secs'}\\n$alerts{'plmo'}"); |
|
} |
return; |
return; |
} |
} else { |
else { |
if (validsecs != null) { |
if (numsplit != null) { |
for (var j=0; j<validsecs.length; j++) { |
for (var j=0; j<numsplit.length; j++) { |
if (validsecstr == '' || validsecstr == null) { |
if ((numsplit[j] == 'all') || |
validsecstr = validsecs[j]; |
(numsplit[j] == 'none')) { |
} else { |
alert("'"+numsplit[j]+"' $alerts{'mayn'}\\n$alerts{'plch'}"); |
validsecstr += ','+validsecs[j]; |
|
} |
|
if ((validsecs[j] == 'all') || |
|
(validsecs[j] == 'none')) { |
|
alert("'"+validsecs[j]+"' $alerts{'mayn'}\\n$alerts{'plch'}"); |
return; |
return; |
} |
} |
for (var k=0; k<groups.length; k++) { |
for (var k=0; k<groups.length; k++) { |
if (numsplit[j] == groups[k]) { |
if (validsecs[j] == groups[k]) { |
alert("'"+numsplit[j]+"' $alerts{'mnot'}\\n$alerts{'secn'}"); |
alert("'"+validsecs[j]+"' $alerts{'mnot'}\\n$alerts{'secn'}"); |
return; |
return; |
} |
} |
} |
} |
} |
} |
} |
} |
formname.elements[i+2].value = sections; |
|
} |
} |
|
if ((validsecstr != '') && (validsecstr != null)) { |
|
if ((sections == '') || (sections == null)) { |
|
sections = validsecstr; |
|
} else { |
|
sections = sections + "," + validsecstr; |
|
} |
|
} |
|
formname.elements[num+2].value = sections; |
} |
} |
} |
} |
} |
} |
Line 5123 sub dc_setcourse_js {
|
Line 5313 sub dc_setcourse_js {
|
my ($formname,$mode,$context) = @_; |
my ($formname,$mode,$context) = @_; |
my ($dc_setcourse_code,$authen_check); |
my ($dc_setcourse_code,$authen_check); |
my $cctext = &Apache::lonnet::plaintext('cc'); |
my $cctext = &Apache::lonnet::plaintext('cc'); |
|
my $cotext = &Apache::lonnet::plaintext('co'); |
my %alerts = §ioncheck_alerts(); |
my %alerts = §ioncheck_alerts(); |
my $role = 'role'; |
my $role = 'role'; |
if ($mode eq 'upload') { |
if ($mode eq 'upload') { |
Line 5169 function setCourse() {
|
Line 5360 function setCourse() {
|
numsections = numsections + newsecs.length; |
numsections = numsections + newsecs.length; |
} |
} |
if ((userrole == 'st') && (numsections > 1)) { |
if ((userrole == 'st') && (numsections > 1)) { |
alert("$alerts{'inea'}. $alerts{'youh'} "+numsections+" $alerts{'sect'}.\\n$alerts{'plsm'}.") |
if (document.$formname.crstype.value == 'Community') { |
|
alert("$alerts{'inco'}. $alerts{'youh'} "+numsections+" $alerts{'sect'}.\\n$alerts{'plsm'}.") |
|
} else { |
|
alert("$alerts{'inea'}. $alerts{'youh'} "+numsections+" $alerts{'sect'}.\\n$alerts{'plsm'}.") |
|
} |
return; |
return; |
} |
} |
for (var j=0; j<newsecs.length; j++) { |
for (var j=0; j<newsecs.length; j++) { |
Line 5181 function setCourse() {
|
Line 5376 function setCourse() {
|
var groups = document.$formname.groups.value.split(/,/g); |
var groups = document.$formname.groups.value.split(/,/g); |
for (var k=0; k<groups.length; k++) { |
for (var k=0; k<groups.length; k++) { |
if (newsecs[j] == groups[k]) { |
if (newsecs[j] == groups[k]) { |
alert("'"+newsecs[j]+"' $alerts{'mayt'}.\\n$alerts{'secn'}. $alerts{'plsc'}."); |
if (document.$formname.crstype.value == 'Community') { |
|
alert("'"+newsecs[j]+"' $alerts{'mayc'}.\\n$alerts{'secn'}. $alerts{'plsc'}."); |
|
} else { |
|
alert("'"+newsecs[j]+"' $alerts{'mayt'}.\\n$alerts{'secn'}. $alerts{'plsc'}."); |
|
} |
return; |
return; |
} |
} |
} |
} |
Line 5191 function setCourse() {
|
Line 5390 function setCourse() {
|
alert("$alerts{'secd'} $cctext $alerts{'role'}.\\n$alerts{'accr'}."); |
alert("$alerts{'secd'} $cctext $alerts{'role'}.\\n$alerts{'accr'}."); |
section = ""; |
section = ""; |
} |
} |
|
if ((userrole == 'co') && (numsections > 0)) { |
|
alert("$alerts{'secd'} $cotext $alerts{'role'}.\\n$alerts{'accr'}."); |
|
section = ""; |
|
} |
SCRIPTTOP |
SCRIPTTOP |
if ($mode ne 'upload') { |
if ($mode ne 'upload') { |
$dc_setcourse_code .= (<<"ENDSCRIPT"); |
$dc_setcourse_code .= (<<"ENDSCRIPT"); |
var coursename = "_$env{'request.role.domain'}"+"_"+course+"_"+userrole |
var coursename = "_$env{'request.role.domain'}"+"_"+course+"_"+userrole |
var numcourse = getIndex(document.$formname.dccourse); |
var numcourse = getIndex(document.$formname.dccourse); |
if (numcourse == "-1") { |
if (numcourse == "-1") { |
alert("$alerts{'thwa'}"); |
if (document.$formname.type == 'Community') { |
|
alert("$alerts{'thwc'}"); |
|
} else { |
|
alert("$alerts{'thwa'}"); |
|
} |
return; |
return; |
} |
} |
else { |
else { |
Line 5306 ENDSCRIPT
|
Line 5513 ENDSCRIPT
|
|
|
sub sectioncheck_alerts { |
sub sectioncheck_alerts { |
my %alerts = &Apache::lonlocal::texthash( |
my %alerts = &Apache::lonlocal::texthash( |
curd => 'You must select a course in the current domain', |
curd => 'You must select a course or community in the current domain', |
inea => 'In each course, each user may only have one student role at a time', |
inea => 'In each course, each user may only have one student role at a time', |
|
inco => 'In each community, each user may only have one member role at a time', |
youh => 'You had selected', |
youh => 'You had selected', |
sect => 'sections', |
sect => 'sections', |
plsm => 'Please modify your selections so they include no more than one section', |
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', |
mayn => 'may not be used as the name for a section, as it is a reserved word', |
plsc => 'Please choose a different section name', |
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', |
mayt => 'may not be used as the name for a section, as it is the name of a course group', |
|
mayc => 'may not be used as the name for a section, as it is the name of a community group', |
secn => 'Section names and group names must be distinct', |
secn => 'Section names and group names must be distinct', |
secd => 'Section designations do not apply to ', |
secd => 'Section designations do not apply to ', |
role => 'roles', |
role => 'roles', |
accr => 'role will be added with access to all sections', |
accr => 'role will be added with access to all sections', |
thwa => 'There was a problem with your course selection' |
thwa => 'There was a problem with your course selection', |
|
thwc => 'There was a problem with your community selection', |
); |
); |
return %alerts; |
return %alerts; |
} |
} |