version 1.102, 2009/10/31 14:27:48
|
version 1.109.2.4, 2010/08/10 04:00:16
|
Line 36 use Apache::loncommon();
|
Line 36 use Apache::loncommon();
|
use Apache::lonhtmlcommon; |
use Apache::lonhtmlcommon; |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::longroup; |
use Apache::longroup; |
|
use Apache::lonnavmaps; |
use LONCAPA qw(:DEFAULT :match); |
use LONCAPA qw(:DEFAULT :match); |
|
|
############################################################### |
############################################################### |
Line 91 sub modifyuserrole {
|
Line 92 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 296 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 333 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 366 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 387 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 831 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 900 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 980 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 1177 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 1185 sub default_role_selector {
|
Line 1186 sub default_role_selector {
|
'exs' => "Existing sections", |
'exs' => "Existing sections", |
'new' => "New section", |
'new' => "New section", |
); |
); |
$options = '<select name="defaultrole">'."\n". |
$options = '<select name="defaultrole">'."\n"; |
' <option value="">'.&mt('Please select').'</option>'."\n"; |
unless (($context eq 'course') && (&Apache::loncommon::needs_gci_custom())) { |
|
$options .= ' <option value="">'.&mt('Please select').'</option>'."\n"; |
|
} |
if ($context eq 'course') { |
if ($context eq 'course') { |
$options .= &default_course_roles($context,$checkpriv,$crstype,%customroles); |
$options .= &default_course_roles($context,$checkpriv,$crstype,%customroles); |
} elsif ($context eq 'author') { |
} elsif ($context eq 'author') { |
Line 1202 sub default_role_selector {
|
Line 1205 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 1232 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 1353 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 1449 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') && |
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 1480 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 1563 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 1705 sub section_group_filter {
|
Line 1720 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 1951 sub process_coursepick {
|
Line 1966 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 2077 sub process_date_info {
|
Line 2096 sub process_date_info {
|
|
|
sub show_users_list { |
sub show_users_list { |
my ($r,$context,$mode,$permission,$statusmode,$userlist,$keylist,$formname)=@_; |
my ($r,$context,$mode,$permission,$statusmode,$userlist,$keylist,$formname)=@_; |
|
my $custommenu; |
if ($formname eq '') { |
if ($formname eq '') { |
$formname = 'studentform'; |
$formname = 'studentform'; |
} |
} |
Line 2101 sub show_users_list {
|
Line 2121 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,$crstype); |
my ($cid,$cdom,$cnum,$classgroups,$displayphotos,$displayclickers,$crstype, |
|
$clickersupport,$displaygroups); |
if ($context eq 'course') { |
if ($context eq 'course') { |
$cid = $env{'request.course.id'}; |
$cid = $env{'request.course.id'}; |
$crstype = &Apache::loncommon::course_type(); |
$crstype = &Apache::loncommon::course_type(); |
($cnum,$cdom) = &get_course_identity($cid); |
($cnum,$cdom) = &get_course_identity($cid); |
|
$custommenu = &Apache::loncommon::needs_gci_custom(); |
|
unless ($custommenu) { |
|
$clickersupport = 1; |
|
$displaygroups = 1; |
|
} |
($classgroups) = &Apache::loncoursedata::get_group_memberships( |
($classgroups) = &Apache::loncoursedata::get_group_memberships( |
$userlist,$keylist,$cdom,$cnum); |
$userlist,$keylist,$cdom,$cnum); |
if ($mode eq 'autoenroll') { |
if ($mode eq 'autoenroll') { |
Line 2142 END
|
Line 2168 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 2226 END
|
Line 2252 END
|
'role' => "role", |
'role' => "role", |
'type' => "enroll type/action", |
'type' => "enroll type/action", |
'email' => "e-mail address", |
'email' => "e-mail address", |
|
'lastlogin' => "last login", |
|
'submissions' => "test status", |
'photo' => "photo", |
'photo' => "photo", |
'extent' => "extent", |
'extent' => "extent", |
'pr' => "Proceed", |
'pr' => "Proceed", |
Line 2272 END
|
Line 2300 END
|
push(@cols,'status'); |
push(@cols,'status'); |
} |
} |
if ($context eq 'course') { |
if ($context eq 'course') { |
push(@cols,'groups'); |
if ($displaygroups) { |
|
push(@cols,'groups'); |
|
} |
} |
} |
push(@cols,'email'); |
push(@cols,'email'); |
|
if ($context eq 'course') { |
|
if ($custommenu) { |
|
push(@cols,'lastlogin'); |
|
if (($env{'form.showrole'} eq 'Any') || ($env{'form.showrole'} eq 'st')) { |
|
push(@cols,'submissions'); |
|
} |
|
} |
|
} |
} |
} |
|
|
my $rolefilter = $env{'form.showrole'}; |
my $rolefilter = $env{'form.showrole'}; |
Line 2293 END
|
Line 2331 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 2387 END
|
Line 2429 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"; |
} |
} |
} |
} |
foreach my $item (@cols) { |
foreach my $item (@cols) { |
$output .= "<th><a href=\"javascript:document.$formname.sortby.value='$item';document.$formname.submit();\">$lt{$item}</a></th>\n"; |
if (grep(/^\Q$item\E$/,@sortable)) { |
|
$output .= "<th><a href=\"javascript:document.$formname.sortby.value='$item';document.$formname.submit();\">$lt{$item}</a></th>\n"; |
|
} else { |
|
$output .= "<th>$lt{$item}</th>\n"; |
|
} |
} |
} |
my %role_types = &role_type_names(); |
my %role_types = &role_type_names(); |
if ($context eq 'course' && $mode ne 'autoenroll') { |
if ($context eq 'course' && $mode ne 'autoenroll') { |
if ($env{'form.showrole'} eq 'st' || $env{'form.showrole'} eq 'Any') { |
if ($env{'form.showrole'} eq 'st' || $env{'form.showrole'} eq 'Any') { |
# Clicker display on or off? |
# Clicker display on or off? |
my %clicker_options = ( |
if ($clickersupport) { |
'on' => 'Show', |
my %clicker_options = ( |
'off' => 'Hide', |
'on' => 'Show', |
); |
'off' => 'Hide', |
my $clickerchg = 'on'; |
); |
if ($displayclickers eq 'on') { |
my $clickerchg = 'on'; |
$clickerchg = 'off'; |
if ($displayclickers eq 'on') { |
} |
$clickerchg = 'off'; |
$output .= ' <th>'."\n".' ' |
} |
.&mt('[_1]'.$clicker_options{$clickerchg}.'[_2] clicker id' |
$output .= ' <th>'."\n".' ' |
|
.&mt('[_1]'.$clicker_options{$clickerchg}.'[_2] clicker id' |
,'<a href="javascript:document.'.$formname.'.displayclickers.value=' |
,'<a href="javascript:document.'.$formname.'.displayclickers.value=' |
."'".$clickerchg."'".';document.'.$formname.'.submit();">' |
."'".$clickerchg."'".';document.'.$formname.'.submit();">' |
,'</a>') |
,'</a>') |
."\n".' </th>'."\n"; |
."\n".' </th>'."\n"; |
|
} |
# Photo display on or off? |
# Photo display on or off? |
if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) { |
if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) { |
my %photo_options = &Apache::lonlocal::texthash( |
my %photo_options = &Apache::lonlocal::texthash( |
Line 2446 END
|
Line 2489 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; |
} |
} |
# |
# |
push @cols,'clicker'; |
if ($clickersupport) { |
|
push @cols,'clicker'; |
|
} |
# Write headers and data to file |
# Write headers and data to file |
print $CSVfile '"'.$results_description.'"'."\n"; |
print $CSVfile '"'.$results_description.'"'."\n"; |
print $CSVfile '"'.join('","',map { |
print $CSVfile '"'.join('","',map { |
&Apache::loncommon::csv_translate($lt{$_}) |
&Apache::loncommon::csv_translate($lt{$_}) |
} (@cols))."\"\n"; |
} (@cols))."\"\n"; |
} elsif ($mode eq 'excel') { |
} elsif ($mode eq 'excel') { |
push @cols,'clicker'; |
if ($clickersupport) { |
|
push @cols,'clicker'; |
|
} |
# Create the excel spreadsheet |
# Create the excel spreadsheet |
($excel_workbook,$excel_filename,$format) = |
($excel_workbook,$excel_filename,$format) = |
&Apache::loncommon::create_workbook($r); |
&Apache::loncommon::create_workbook($r); |
Line 2495 END
|
Line 2546 END
|
Future => 'Future', |
Future => 'Future', |
Expired => 'Expired', |
Expired => 'Expired', |
); |
); |
|
# If this is for a single course get last course "log-in" and submissions. |
|
my (%crslogins,%stusubmissions,%elapsed,$numparts,%nummultipart,$multipart); |
|
my $now = time; |
|
if ($context eq 'course') { |
|
if ($custommenu) { |
|
%crslogins=&Apache::lonnet::dump('nohist_crslastlogin',$cdom,$cnum); |
|
%stusubmissions=&Apache::lonnet::dump('nohist_submissiontracker',$cdom,$cnum); |
|
%elapsed = &Apache::lonlocal::texthash( |
|
-1 => 'more than a month ago', |
|
2592000 => 'within last 30 days', |
|
604800 => 'within last 7 days', |
|
86400 => 'within last 24 hours', |
|
); |
|
my $navmap = Apache::lonnavmaps::navmap->new(); |
|
if (defined($navmap)) { |
|
my @allres=$navmap->retrieveResources('/uploaded/'.$cdom.'/'.$cnum.'/default_1261144274.sequence',sub { $_[0]->is_problem() },0); |
|
foreach my $resource (@allres) { |
|
my @parts = $resource->parts(); |
|
my $count = scalar(@parts); |
|
if ($count > 1) { |
|
$nummultipart{$count} ++; |
|
} |
|
$numparts += $count; |
|
} |
|
if (keys(%nummultipart) > 0) { |
|
$multipart = '<br />'.'contains'; |
|
foreach my $key (sort {$a <=> $b} keys(%nummultipart)) { |
|
$multipart .= " nummultipart{$key} multipart questions (with $key parts)"; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
|
# Get groups, role, permanent e-mail so we can sort on them if |
# Get groups, role, permanent e-mail so we can sort on them if |
# necessary. |
# necessary. |
foreach my $user (keys(%{$userlist})) { |
foreach my $user (keys(%{$userlist})) { |
Line 2641 END
|
Line 2726 END
|
} else { |
} else { |
$in{'end'} = &Apache::lonlocal::locallocaltime($in{'end'}); |
$in{'end'} = &Apache::lonlocal::locallocaltime($in{'end'}); |
} |
} |
|
if ($context eq 'course') { |
|
if ($custommenu) { |
|
my $lastlogin = $crslogins{$in{'username'}.':'.$in{'domain'}.':'.$in{'section'}.':'.$role}; |
|
if ($lastlogin ne '') { |
|
my $sincelogin = $now - $lastlogin; |
|
if ($sincelogin < 86400) { |
|
$in{'lastlogin'} = $elapsed{'86400'}; |
|
} elsif ($sincelogin < 604800) { |
|
$in{'lastlogin'} = $elapsed{'604800'}; |
|
} elsif ($sincelogin < 2592000 ) { |
|
$in{'lastlogin'} = $elapsed{'2592000'}; |
|
} else { |
|
$in{'lastlogin'} = $elapsed{'-1'}; |
|
} |
|
} |
|
} |
|
if ($role eq 'st') { |
|
my $numsub = $stusubmissions{$in{'username'}.':'.$in{'domain'}."\0attempts"} + |
|
$stusubmissions{$in{'username'}.':'.$in{'domain'}."\0pilotsubs"}; |
|
if (!$numsub) { |
|
$in{'submissions'} = 'not attempted'; |
|
} elsif ($numsub < $numparts) { |
|
$in{'submissions'} = 'incomplete ('.$numsub.'/'.$numparts.')'; |
|
} else { |
|
$in{'submissions'} = 'completed'; |
|
} |
|
} |
|
} |
if ($mode eq 'view' || $mode eq 'html' || $mode eq 'autoenroll' || $mode eq 'pickauthor') { |
if ($mode eq 'view' || $mode eq 'html' || $mode eq 'autoenroll' || $mode eq 'pickauthor') { |
$r->print(&Apache::loncommon::start_data_table_row()); |
$r->print(&Apache::loncommon::start_data_table_row()); |
my $checkval; |
my $checkval; |
Line 2714 END
|
Line 2827 END
|
$showitem = $ltstatus{$in{$item}}; |
$showitem = $ltstatus{$in{$item}}; |
} |
} |
$r->print('<td>'.$showitem.'</td>'."\n"); |
$r->print('<td>'.$showitem.'</td>'."\n"); |
|
} elsif ($item eq 'submissions') { |
|
if ($in{$item} =~ /^incomplete/) { |
|
$r->print('<td>'.$in{$item}.$multipart.'</td>'); |
|
} else { |
|
$r->print('<td>'.$in{$item}.'</td>'."\n"); |
|
} |
} else { |
} else { |
$r->print('<td>'.$in{$item}.'</td>'."\n"); |
$r->print('<td>'.$in{$item}.'</td>'."\n"); |
} |
} |
} |
} |
if (($context eq 'course') && ($mode ne 'autoenroll')) { |
if (($context eq 'course') && ($mode ne 'autoenroll')) { |
if ($env{'form.showrole'} eq 'st' || $env{'form.showrole'} eq 'Any') { |
if ($env{'form.showrole'} eq 'st' || $env{'form.showrole'} eq 'Any') { |
if ($displayclickers eq 'on') { |
if ($clickersupport) { |
my $clickers = |
if ($displayclickers eq 'on') { |
|
my $clickers = |
(&Apache::lonnet::userenvironment($in{'domain'},$in{'username'},'clickers'))[1]; |
(&Apache::lonnet::userenvironment($in{'domain'},$in{'username'},'clickers'))[1]; |
if ($clickers!~/\w/) { $clickers='-'; } |
if ($clickers!~/\w/) { $clickers='-'; } |
$r->print('<td>'.$clickers.'</td>'); |
$r->print('<td>'.$clickers.'</td>'); |
} else { |
} else { |
$r->print(' <td> </td> '); |
$r->print(' <td> </td> '); |
|
} |
} |
} |
if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) { |
if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) { |
if ($displayphotos eq 'on' && $role eq 'st' && $in{'photo'} ne '') { |
if ($displayphotos eq 'on' && $role eq 'st' && $in{'photo'} ne '') { |
Line 3090 END
|
Line 3211 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 3150 ENDJS
|
Line 3271 ENDJS
|
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 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.', |
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 3172 ENDJS
|
Line 3293 ENDJS
|
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(); |
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 role in a community that is not a member role, a user may have roles in more than one section of a community 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 3288 sub results_header_row {
|
Line 3414 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 3437 sub show_drop_list {
|
Line 3563 sub show_drop_list {
|
my ($r,$classlist,$nosort,$permission,$crstype) = @_; |
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); |
|
my $displaygroups; |
|
unless (&Apache::loncommon::needs_gci_custom()) { |
|
$displaygroups = 1; |
|
} |
if (! exists($env{'form.sortby'})) { |
if (! exists($env{'form.sortby'})) { |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
['sortby']); |
['sortby']); |
Line 3514 END
|
Line 3644 END
|
<th>$lt{'sec'}</th> |
<th>$lt{'sec'}</th> |
<th>$lt{'start'}</th> |
<th>$lt{'start'}</th> |
<th>$lt{'end'}</th> |
<th>$lt{'end'}</th> |
<th>$lt{'groups'}</th> |
|
END |
END |
|
if ($displaygroups) { |
|
$r->print(" <th>$lt{'groups'}</th>\n"); |
|
} |
$r->print(&Apache::loncommon::end_data_table_header_row()); |
$r->print(&Apache::loncommon::end_data_table_header_row()); |
} else { |
} else { |
$r->print(&Apache::loncommon::start_data_table(). |
$r->print(&Apache::loncommon::start_data_table(). |
Line 3536 END
|
Line 3668 END
|
<a href="/adm/createuser?action=$action&sortby=start">$lt{'start'}</a> |
<a href="/adm/createuser?action=$action&sortby=start">$lt{'start'}</a> |
</th><th> |
</th><th> |
<a href="/adm/createuser?action=$action&sortby=end">$lt{'end'}</a> |
<a href="/adm/createuser?action=$action&sortby=end">$lt{'end'}</a> |
</th><th> |
|
<a href="/adm/createuser?action=$action&sortby=groups">$lt{'groups'}</a> |
|
</th> |
</th> |
END |
END |
|
if ($displaygroups) { |
|
$r->print("<th> |
|
<a href=\"/adm/createuser?action=$action&sortby=groups\">$lt{'groups'}</a> |
|
</th>\n"); |
|
} |
$r->print(&Apache::loncommon::end_data_table_header_row()); |
$r->print(&Apache::loncommon::end_data_table_header_row()); |
} |
} |
# |
# |
Line 3592 END
|
Line 3727 END
|
<td>$section</td> |
<td>$section</td> |
<td>$start $startitem</td> |
<td>$start $startitem</td> |
<td>$end</td> |
<td>$end</td> |
<td>$active_groups</td> |
|
END |
END |
|
if ($displaygroups) { |
|
$r->print(" <td>$active_groups</td>\n"); |
|
} |
$r->print(&Apache::loncommon::end_data_table_row()); |
$r->print(&Apache::loncommon::end_data_table_row()); |
} |
} |
$r->print(&Apache::loncommon::end_data_table().'<br />'); |
$r->print(&Apache::loncommon::end_data_table().'<br />'); |
Line 3630 sub print_first_users_upload_form {
|
Line 3767 sub print_first_users_upload_form {
|
$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 .= '<h3>'.&mt('Upload a file containing information about users').'</h3>'."\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" |
|
.&mt('Please upload an UTF8 encoded file to ensure a correct character encoding in your classlist.')."\n" |
|
.'</p>'."\n" |
|
.&Apache::loncommon::upfile_select_html() |
.&Apache::loncommon::upfile_select_html() |
.&Apache::lonhtmlcommon::row_closure() |
.&Apache::lonhtmlcommon::row_closure() |
.&Apache::lonhtmlcommon::row_title( |
.&Apache::lonhtmlcommon::row_title( |
Line 3660 sub print_first_users_upload_form {
|
Line 3793 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 4021 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 4265 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 4495 sub update_user_list {
|
Line 4626 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'}); |
@newsecs = split(/,/,$env{'form.newsecs'}); |
} |
} |
# remove existing section if not to be retained. |
# remove existing section if not to be retained. |
Line 4750 sub get_groupslist {
|
Line 4881 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 4920 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 on 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 4801 sub setsections_javascript {
|
Line 4935 sub setsections_javascript {
|
); |
); |
$setsection_js .= <<"ENDSECCODE"; |
$setsection_js .= <<"ENDSECCODE"; |
|
|
function setSections(formname) { |
function setSections(formname,crstype) { |
var re1 = /^currsec_/; |
var re1 = /^currsec_/; |
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++) { |
Line 4810 function setSections(formname) {
|
Line 4944 function setSections(formname) {
|
if (checkcurr != null) { |
if (checkcurr != null) { |
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 sections; |
Line 4849 function setSections(formname) {
|
Line 4986 function setSections(formname) {
|
} |
} |
|
|
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 { |
Line 4994 sub roles_by_context {
|
Line 5135 sub roles_by_context {
|
if ($env{'request.role'} =~ m{^dc\./}) { |
if ($env{'request.role'} =~ m{^dc\./}) { |
push(@allroles,'ad'); |
push(@allroles,'ad'); |
} |
} |
push(@allroles,('ta','ep','in')); |
if (&Apache::loncommon::needs_gci_custom()) { |
if ($crstype eq 'Community') { |
if ($crstype eq 'Community') { |
push(@allroles,'co'); |
push(@allroles,'co'); |
|
} else { |
|
push(@allroles,'cc'); |
|
} |
} else { |
} else { |
push(@allroles,'cc'); |
push(@allroles,('ta','ep','in')); |
} |
if ($crstype eq 'Community') { |
if ($custom) { |
push(@allroles,'co'); |
push(@allroles,'cr'); |
} else { |
|
push(@allroles,'cc'); |
|
} |
|
if ($custom) { |
|
push(@allroles,'cr'); |
|
} |
} |
} |
} elsif ($context eq 'author') { |
} elsif ($context eq 'author') { |
@allroles = ('ca','aa'); |
@allroles = ('ca','aa'); |
Line 5123 sub dc_setcourse_js {
|
Line 5272 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 5319 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 5335 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 5349 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 5472 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; |
} |
} |