version 1.24, 2010/02/21 16:02:09
|
version 1.35, 2010/12/21 00:26:56
|
Line 273 sub handler {
|
Line 273 sub handler {
|
idnu => 'Community ID or number', |
idnu => 'Community ID or number', |
desc => 'Community Description', |
desc => 'Community Description', |
ownr => 'Community Owner', |
ownr => 'Community Owner', |
|
cown => 'Community Co-owners', |
catg => 'Categorize community', |
catg => 'Categorize community', |
excc => 'Exclude from community catalog', |
excc => 'Exclude from community catalog', |
clon => 'Users allowed to clone community', |
clon => 'Users allowed to clone community', |
Line 299 sub handler {
|
Line 300 sub handler {
|
idnu => 'Course ID or number', |
idnu => 'Course ID or number', |
desc => 'Course Description', |
desc => 'Course Description', |
ownr => 'Course Owner', |
ownr => 'Course Owner', |
|
cown => 'Course Co-owners', |
catg => 'Categorize course', |
catg => 'Categorize course', |
excc => 'Exclude from course catalog', |
excc => 'Exclude from course catalog', |
clon => 'Users allowed to clone course', |
clon => 'Users allowed to clone course', |
Line 318 sub handler {
|
Line 320 sub handler {
|
seme => 'Send message to student when clicking Done on Tasks', |
seme => 'Send message to student when clicking Done on Tasks', |
); |
); |
} |
} |
|
$lt{'lcrv'} = 'Required LON-CAPA version'; |
&Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/courseprefs', |
&Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/courseprefs', |
text=>$lt{'conf'}}); |
text=>$lt{'conf'}}); |
my $breadcrumbs = |
my $breadcrumbs = |
Line 342 sub handler {
|
Line 345 sub handler {
|
'courseinfo' => |
'courseinfo' => |
{ text => $lt{'gens'}, |
{ text => $lt{'gens'}, |
help => 'Course_Environment', |
help => 'Course_Environment', |
ordered => ['owner','description','courseid','categories', |
ordered => ['owner','co-owners','loncaparev','description', |
'hidefromcat','externalsyllabus', |
'courseid','categories','hidefromcat', |
'cloners','url','rolenames'], |
'externalsyllabus','cloners','url','rolenames'], |
itemtext => { |
itemtext => { |
owner => $lt{'ownr'}, |
'owner' => $lt{'ownr'}, |
description => $lt{'desc'}, |
'co-owners' => $lt{'cown'}, |
courseid => $lt{'idnu'}, |
'description' => $lt{'desc'}, |
categories => $lt{'catg'}, |
'courseid' => $lt{'idnu'}, |
hidefromcat => $lt{'excc'}, |
'categories' => $lt{'catg'}, |
cloners => $lt{'clon'}, |
'hidefromcat' => $lt{'excc'}, |
externalsyllabus => 'URL of Syllabus', |
'cloners' => $lt{'clon'}, |
url => 'Top Level Map', |
'externalsyllabus' => 'URL of Syllabus', |
rolenames => $lt{'rept'}, |
'url' => 'Top Level Map', |
|
'rolenames' => $lt{'rept'}, |
|
'loncaparev' => $lt{'lcrv'}, |
}, |
}, |
}, |
}, |
'localization' => |
'localization' => |
{ text => 'Language & Time Localization', |
{ text => 'Language and Time Localization', |
help => 'Course_Environment', |
help => 'Course_Environment', |
ordered => ['languages','timezone','datelocale'], |
ordered => ['languages','timezone','datelocale'], |
itemtext => { |
itemtext => { |
Line 382 sub handler {
|
Line 387 sub handler {
|
'discussion' => |
'discussion' => |
{ text => 'Discussion and Chat', |
{ text => 'Discussion and Chat', |
help => 'Course_Environment', |
help => 'Course_Environment', |
ordered => ['plc.roles.denied','plc.users.denied', |
ordered => ['pch.roles.denied','pch.users.denied', |
'pch.roles.denied','pch.users.denied', |
'plc.roles.denied','plc.users.denied', |
'allow_limited_html_in_feedback', |
'allow_limited_html_in_feedback', |
'allow_discussion_post_editing'], |
'allow_discussion_post_editing'], |
itemtext => { |
itemtext => { |
'plc.roles.denied' => 'No Resource Discussion', |
'pch.roles.denied' => 'No Resource Discussion', |
'plc.users.denied' => 'No Resource Discussion', |
'pch.users.denied' => 'No Resource Discussion', |
'pch.roles.denied' => 'No Chat room use', |
'plc.roles.denied' => 'No Chat room use', |
'pch.users.denied' => 'No Chat room use', |
'plc.users.denied' => 'No Chat room use', |
allow_limited_html_in_feedback => 'Allow limited HTML in discussion', |
allow_limited_html_in_feedback => 'Allow limited HTML in discussion', |
allow_discussion_post_editing => 'Users can edit/delete own discussion posts', |
allow_discussion_post_editing => 'Users can edit/delete own discussion posts', |
}, |
}, |
Line 407 sub handler {
|
Line 412 sub handler {
|
ordered => ['default_enrollment_start_date', |
ordered => ['default_enrollment_start_date', |
'default_enrollment_end_date', |
'default_enrollment_end_date', |
'nothideprivileged','student_classlist_view', |
'nothideprivileged','student_classlist_view', |
'student_opt_in','student_classlist_portfiles'], |
'student_classlist_opt_in','student_classlist_portfiles'], |
itemtext => { |
itemtext => { |
default_enrollment_start_date => 'Start date', |
default_enrollment_start_date => 'Start date', |
default_enrollment_end_date => 'End date', |
default_enrollment_end_date => 'End date', |
nothideprivileged => $lt{'priv'}, |
nothideprivileged => $lt{'priv'}, |
student_classlist_view => $lt{'stuv'}, |
student_classlist_view => $lt{'stuv'}, |
student_opt_in => $lt{'stul'}, |
student_classlist_opt_in => $lt{'stul'}, |
student_classlist_portfiles => 'Include link to accessible portfolio files', |
student_classlist_portfiles => 'Include link to accessible portfolio files', |
}, |
}, |
}, |
}, |
Line 676 sub process_changes {
|
Line 681 sub process_changes {
|
} |
} |
} else { |
} else { |
foreach my $entry (@ordered) { |
foreach my $entry (@ordered) { |
|
next if (($entry eq 'loncaparev') || ($entry eq 'owner')); |
if ($entry eq 'cloners') { |
if ($entry eq 'cloners') { |
if ($env{'form.cloners_all'}) { |
if ($env{'form.cloners_all'}) { |
$newvalues{$entry} = '*'; |
$newvalues{$entry} = '*'; |
Line 684 sub process_changes {
|
Line 690 sub process_changes {
|
if (exists($env{'form.cloners_activate'})) { |
if (exists($env{'form.cloners_activate'})) { |
my $actnum = $env{'form.cloners_activate'}; |
my $actnum = $env{'form.cloners_activate'}; |
if ($actnum ne '') { |
if ($actnum ne '') { |
if ($env{'form.clonersdom_'.$actnum} ne '') { |
if ($env{'form.cloners_dom_'.$actnum} ne '') { |
my $clonedom = $env{'form.clonersdom_'.$actnum}; |
my $clonedom = $env{'form.cloners_dom_'.$actnum}; |
if (&check_clone($clonedom,$disallowed) eq 'ok') { |
if (&check_clone($clonedom,$disallowed) eq 'ok') { |
$newvalues{$entry} = '*:'.$clonedom; |
$newvalues{$entry} = '*:'.$clonedom; |
push(@clonedoms,$newvalues{$entry}); |
push(@clonedoms,$newvalues{$entry}); |
Line 755 sub process_changes {
|
Line 761 sub process_changes {
|
} |
} |
} |
} |
} |
} |
|
} elsif ($entry eq 'co-owners') { |
|
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
|
my $coowners = $values->{'internal.co-owners'}; |
|
my @currcoown; |
|
if ($coowners) { |
|
@currcoown = split(',',$coowners); |
|
} |
|
if (&Apache::lonnet::is_course_owner($cdom,$cnum)) { |
|
my $autocoowner; |
|
if (($crstype eq 'Course') && |
|
($values->{'internal.coursecode'})) { |
|
my %domconf = |
|
&Apache::lonnet::get_dom('configuration',['autoenroll'],$cdom); |
|
if (ref($domconf{'autoenroll'}) eq 'HASH') { |
|
$autocoowner = $domconf{'autoenroll'}{'co-owners'}; |
|
} |
|
} |
|
unless ($autocoowner) { |
|
my @keepcoowners = &Apache::loncommon::get_env_multiple('form.coowners'); |
|
my @pendingcoowners = &Apache::loncommon::get_env_multiple('form.pendingcoowners'); |
|
my @invitecoowners = &Apache::loncommon::get_env_multiple('form.invitecoowners'); |
|
if (@invitecoowners) { |
|
push(@pendingcoowners,@invitecoowners); |
|
} |
|
$newvalues{'pendingco-owners'} = join(',',sort(@pendingcoowners)); |
|
$newvalues{'co-owners'} = join(',',sort(@keepcoowners)); |
|
if ($newvalues{'co-owners'} ne $values->{'internal.co-owners'}) { |
|
$changes->{$entry}{'co-owners'} = $newvalues{'co-owners'}; |
|
push(@{$changes->{$entry}{'changed'}},'co-owners'); |
|
} |
|
if ($newvalues{'pendingco-owners'} ne $values->{'internal.pendingco-owners'}) { |
|
$changes->{$entry}{'pendingco-owners'} = $newvalues{'pendingco-owners'}; |
|
push(@{$changes->{$entry}{'changed'}},'pendingco-owners'); |
|
} |
|
} |
|
} else { |
|
my (@newpending,@newcoown); |
|
my $uname = $env{'user.name'}; |
|
my $udom = $env{'user.domain'}; |
|
my $pendingcoowners = $values->{'internal.pendingco-owners'}; |
|
my @pendingcoown = split(',',$pendingcoowners); |
|
if ($env{'form.pending_coowoner'}) { |
|
foreach my $item (@pendingcoown) { |
|
unless ($item eq $uname.':'.$udom) { |
|
push(@newpending,$item); |
|
} |
|
} |
|
@newcoown = @currcoown; |
|
if ($env{'form.pending_coowoner'} eq 'accept') { |
|
unless (grep(/^\Q$uname\E:\Q$udom\E$/,@currcoown)) { |
|
push(@newcoown,$uname.':'.$udom); |
|
} |
|
} |
|
} elsif ($env{'form.remove_coowoner'}) { |
|
foreach my $item (@currcoown) { |
|
unless ($item eq $uname.':'.$udom) { |
|
push(@newcoown,$item); |
|
} |
|
} |
|
if ($pendingcoowners ne '') { |
|
@newpending = @pendingcoown; |
|
} |
|
} |
|
$newvalues{'pendingco-owners'} = join(',',sort(@newpending)); |
|
$newvalues{'co-owners'} = join(',',sort(@newcoown)); |
|
if ($newvalues{'co-owners'} ne $values->{'internal.co-owners'}) { |
|
$changes->{$entry}{'co-owners'} = $newvalues{'co-owners'}; |
|
push(@{$changes->{$entry}{'changed'}},'co-owners'); |
|
} |
|
if ($newvalues{'pendingco-owners'} ne $values->{'internal.pendingco-owners'}) { |
|
$changes->{$entry}{'pendingco-owners'} = $newvalues{'pendingco-owners'}; |
|
push(@{$changes->{$entry}{'changed'}},'pendingco-owners'); |
|
} |
|
} |
} elsif ($entry =~ /^default_enrollment_(start|end)_date$/) { |
} elsif ($entry =~ /^default_enrollment_(start|end)_date$/) { |
$newvalues{$entry}=&Apache::lonhtmlcommon::get_date_from_form($entry); |
$newvalues{$entry}=&Apache::lonhtmlcommon::get_date_from_form($entry); |
} elsif ($entry eq 'rolenames') { |
} elsif ($entry eq 'rolenames') { |
Line 923 sub process_changes {
|
Line 1003 sub process_changes {
|
$hdr .= $env{'form.printfmthdr_limit_'.$i}; |
$hdr .= $env{'form.printfmthdr_limit_'.$i}; |
} |
} |
$hdr .= $env{'form.printfmthdr_sub_'.$i}; |
$hdr .= $env{'form.printfmthdr_sub_'.$i}; |
} elsif ($env{'form.printfmthdr_sub_'.$i} ne '') { |
} elsif ($env{'form.printfmthdr_text_'.$i} ne '') { |
$hdr = $env{'form.printfmthdr_sub_'.$i}; |
$hdr = $env{'form.printfmthdr_text_'.$i}; |
} |
} |
$newhdr[$env{'form.printfmthdr_pos_'.$i}] = $hdr; |
$newhdr[$env{'form.printfmthdr_pos_'.$i}] = $hdr; |
} |
} |
Line 971 sub process_changes {
|
Line 1051 sub process_changes {
|
} else { |
} else { |
$newvalues{$entry} = $env{'form.'.$entry}; |
$newvalues{$entry} = $env{'form.'.$entry}; |
} |
} |
if ($newvalues{$entry} ne $values->{$entry}) { |
unless ($entry eq 'co-owners') { |
$changes->{$entry} = $newvalues{$entry}; |
if ($newvalues{$entry} ne $values->{$entry}) { |
|
$changes->{$entry} = $newvalues{$entry}; |
|
} |
} |
} |
} |
} |
} |
} |
Line 1095 sub store_changes {
|
Line 1177 sub store_changes {
|
next if (!exists($changes->{$item}{$key})); |
next if (!exists($changes->{$item}{$key})); |
my ($displayname,$text); |
my ($displayname,$text); |
$text = $prefs->{$item}->{'itemtext'}{$key}; |
$text = $prefs->{$item}->{'itemtext'}{$key}; |
my $displayval = $changes->{$item}{$key}; |
my $displayval; |
|
unless ($key eq 'co-owners') { |
|
$displayval = $changes->{$item}{$key}; |
|
} |
if ($item eq 'feedback') { |
if ($item eq 'feedback') { |
if ($key =~ /^(question|policy|comment)(\.email)\.text$/) { |
if ($key =~ /^(question|policy|comment)(\.email)\.text$/) { |
$text = $prefs->{$item}->{'itemtext'}{$1.$2}; |
$text = $prefs->{$item}->{'itemtext'}{$1.$2}; |
Line 1162 sub store_changes {
|
Line 1247 sub store_changes {
|
$displayval = &mt('No'); |
$displayval = &mt('No'); |
} |
} |
} |
} |
if ($changes->{$item}{$key} eq '') { |
if ($key eq 'co-owners') { |
|
if (ref($changes->{$item}{$key}) eq 'HASH') { |
|
if (ref($changes->{$item}{$key}{'changed'}) eq 'ARRAY') { |
|
foreach my $type ('co-owners','pendingco-owners') { |
|
next unless (grep(/^\Q$type\E$/,@{$changes->{$item}{$key}{'changed'}})); |
|
if ($type eq 'pendingco-owners') { |
|
if (&Apache::lonnet::is_course_owner($cdom,$cnum)) { |
|
$displayname = &mt('Invited as co-owners, pending acceptance'); |
|
} |
|
} |
|
if ($changes->{$item}{$key}{$type} eq '') { |
|
push(@delkeys,'internal.'.$type); |
|
if (&Apache::lonnet::is_course_owner($cdom,$cnum)) { |
|
$output .= '<li>'.&Apache::lonhtmlcommon::confirm_success(&mt('Deleted setting for [_1]', |
|
'<i>'.$displayname.'</i>')).'</li>'; |
|
} |
|
} elsif (&Apache::lonnet::is_course_owner($cdom,$cnum)) { |
|
$displayval = join(', ',map { &Apache::loncommon::plainname(split(':',$_)); } split(',',$changes->{$item}{$key}{$type})); |
|
$output .= '<li>'.&Apache::lonhtmlcommon::confirm_success(&mt('[_1] set to [_2]', |
|
'<i>'.$displayname.'</i>', |
|
"'<b>$displayval</b>'")).'</li>'; |
|
} |
|
} |
|
} |
|
unless (&Apache::lonnet::is_course_owner($cdom,$cnum)) { |
|
if ($env{'form.pending_coowoner'} eq 'accept') { |
|
$displayval = &mt('on'); |
|
} elsif ($env{'form.pending_coowoner'} eq 'decline') { |
|
$displayval = ''; |
|
$output .= '<li>'.&Apache::lonhtmlcommon::confirm_success(&mt('Invitation to be co-owner declined')).'</li>'; |
|
} elsif ($env{'form.remove_coowoner'}) { |
|
$displayval = &mt('off'); |
|
} |
|
if ($displayval) { |
|
$displayname = &mt('Your co-ownership status'); |
|
$output .= '<li>'.&Apache::lonhtmlcommon::confirm_success(&mt('[_1] set to [_2]', |
|
'<i>'.$displayname.'</i>', |
|
"'<b>$displayval</b>'")).'</li>'; |
|
} |
|
} |
|
} |
|
} elsif ($changes->{$item}{$key} eq '') { |
push(@delkeys,$key); |
push(@delkeys,$key); |
$output .= '<li>'.&Apache::lonhtmlcommon::confirm_success(&mt('Deleted setting for [_1]', |
$output .= '<li>'.&Apache::lonhtmlcommon::confirm_success(&mt('Deleted setting for [_1]', |
'<i>'.$displayname.'</i>')).'</li>'; |
'<i>'.$displayname.'</i>')).'</li>'; |
Line 1173 sub store_changes {
|
Line 1299 sub store_changes {
|
if ($key eq 'url') { |
if ($key eq 'url') { |
my $bkuptime=time; |
my $bkuptime=time; |
$output .= (' 'x2).&mt('(Previous URL backed up)').': '. |
$output .= (' 'x2).&mt('(Previous URL backed up)').': '. |
$storehash{'top level map backup '.$bkuptime} => $values->{$key}; |
$storehash{'top level map backup '.$bkuptime} = $values->{$key}; |
} |
} |
$output .= '</li>'; |
$output .= '</li>'; |
} |
} |
$storehash{$key} = $changes->{$item}{$key}; |
if ($key eq 'co-owners') { |
|
if (ref($changes->{$item}{$key}) eq 'HASH') { |
|
if (ref($changes->{$item}{$key}{'changed'}) eq 'ARRAY') { |
|
foreach my $type ('co-owners','pendingco-owners') { |
|
next unless (grep(/^\Q$type\E$/,@{$changes->{$item}{$key}{'changed'}})); |
|
$storehash{'internal.'.$type} = $changes->{$item}{$key}{$type}; |
|
} |
|
} |
|
} |
|
} else { |
|
$storehash{$key} = $changes->{$item}{$key}; |
|
} |
} |
} |
if ($key eq 'cloners') { |
if ($key eq 'cloners') { |
# Get existing cloners |
# Get existing cloners |
Line 1190 sub store_changes {
|
Line 1327 sub store_changes {
|
} |
} |
} |
} |
if (($key eq 'description') || ($key eq 'cloners') || |
if (($key eq 'description') || ($key eq 'cloners') || |
($key eq 'hidefromcat') || ($key eq 'categories')) { |
($key eq 'hidefromcat') || ($key eq 'categories') || |
|
($key eq 'co-owners')) { |
push(@need_env_update,$key); |
push(@need_env_update,$key); |
} |
} |
} |
} |
Line 1264 sub update_env {
|
Line 1402 sub update_env {
|
&Apache::lonnet::appenv({'course.'.$env{'request.course.id'}.'.'.$key => $storehash->{$key}}); |
&Apache::lonnet::appenv({'course.'.$env{'request.course.id'}.'.'.$key => $storehash->{$key}}); |
$crsinfo{$env{'request.course.id'}}{$key} = $storehash->{$key}; |
$crsinfo{$env{'request.course.id'}}{$key} = $storehash->{$key}; |
$count ++; |
$count ++; |
|
} elsif ($key eq 'co-owners') { |
|
if ($storehash->{'internal.co-owners'} ne '') { |
|
&Apache::lonnet::appenv({'course.'.$env{'request.course.id'}.'.internal.co-owners' => $storehash->{'internal.co-owners'}}); |
|
} |
|
if ($storehash->{'internal.pendingco-owners'} ne '') { |
|
&Apache::lonnet::appenv({'course.'.$env{'request.course.id'}.'.internal.pendingco-owners' => $storehash->{'internal.pendingco-owners'}}); |
|
} |
|
my @coowners = split(',',$storehash->{'internal.'.$key}); |
|
$crsinfo{$env{'request.course.id'}}{'co-owners'} = \@coowners; |
|
$count ++; |
} |
} |
} |
} |
if ($count) { |
if ($count) { |
Line 1478 sub print_courseinfo {
|
Line 1626 sub print_courseinfo {
|
unless ((ref($settings) eq 'HASH') && (ref($ordered) eq 'ARRAY') && (ref($itemtext) eq 'HASH')) { |
unless ((ref($settings) eq 'HASH') && (ref($ordered) eq 'ARRAY') && (ref($itemtext) eq 'HASH')) { |
return; |
return; |
} |
} |
my ($cathash,$categoriesform); |
my ($cathash,$categoriesform,$autocoowner); |
my %domconf = |
my %domconf = |
&Apache::lonnet::get_dom('configuration',['coursecategories'],$cdom); |
&Apache::lonnet::get_dom('configuration',['coursecategories','autoenroll'],$cdom); |
if (ref($domconf{'coursecategories'}) eq 'HASH') { |
if (ref($domconf{'coursecategories'}) eq 'HASH') { |
$cathash = $domconf{'coursecategories'}{'cats'}; |
$cathash = $domconf{'coursecategories'}{'cats'}; |
if (ref($cathash) eq 'HASH') { |
if (ref($cathash) eq 'HASH') { |
Line 1489 sub print_courseinfo {
|
Line 1637 sub print_courseinfo {
|
$settings->{'categories'},$crstype)."\n"; |
$settings->{'categories'},$crstype)."\n"; |
} |
} |
} |
} |
|
if (ref($domconf{'autoenroll'}) eq 'HASH') { |
|
$autocoowner = $domconf{'autoenroll'}{'co-owners'}; |
|
} |
if (!defined($categoriesform)) { |
if (!defined($categoriesform)) { |
$categoriesform = &mt('No categories defined in this domain.'); |
$categoriesform = &mt('No categories defined in this domain.'); |
} |
} |
Line 1521 sub print_courseinfo {
|
Line 1672 sub print_courseinfo {
|
'owner' => { |
'owner' => { |
text => '<b>'.&mt($itemtext->{'owner'}).'</b>', |
text => '<b>'.&mt($itemtext->{'owner'}).'</b>', |
}, |
}, |
|
'co-owners' => { |
|
text => '<b>'.&mt($itemtext->{'co-owners'}).'</b>', |
|
}, |
'courseid' => { |
'courseid' => { |
text => '<b>'.&mt($itemtext->{'courseid'}).'</b><br />'.'('. |
text => '<b>'.&mt($itemtext->{'courseid'}).'</b><br />'.'('. |
&mt('internal, optional').')', |
&mt('internal, optional').')', |
Line 1558 sub print_courseinfo {
|
Line 1712 sub print_courseinfo {
|
input => 'textbox', |
input => 'textbox', |
size => '25', |
size => '25', |
}, |
}, |
|
'loncaparev' => { |
|
text => '<b>'.&mt($itemtext->{'loncaparev'}).'</b>', |
|
}, |
); |
); |
my $datatable; |
my $datatable; |
my $count = 0; |
my $count = 0; |
Line 1695 sub print_courseinfo {
|
Line 1852 sub print_courseinfo {
|
} else { |
} else { |
$owner = &mt('None specified'); |
$owner = &mt('None specified'); |
} |
} |
my $domdesc = &Apache::lonnet::domain($cdom,'description'); |
|
$datatable .= $owner; |
$datatable .= $owner; |
|
} elsif ($item eq 'co-owners') { |
|
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
|
my $coowners = $env{'course.'.$env{'request.course.id'}.'.internal.co-owners'}; |
|
my @currcoown; |
|
if ($coowners) { |
|
@currcoown = split(',',$coowners); |
|
} |
|
if (&Apache::lonnet::is_course_owner($cdom,$cnum)) { |
|
if (($crstype eq 'Course') && ($env{'course.'.$env{'request.course.id'}.'.internal.coursecode'}) && ($autocoowner)) { |
|
$datatable .= &show_autocoowners(@currcoown); |
|
} else { |
|
$datatable .= &coowner_invitations($cnum,$cdom,@currcoown); |
|
} |
|
} else { |
|
if (($crstype eq 'Course') && ($env{'course.'.$env{'request.course.id'}.'.internal.coursecode'}) && ($autocoowner)) { |
|
$datatable .= &show_autocoowners(@currcoown); |
|
} else { |
|
$datatable .= &manage_coownership($cnum,$cdom,@currcoown); |
|
} |
|
} |
|
} elsif ($item eq 'loncaparev') { |
|
my $loncaparev = $env{'course.'.$env{'request.course.id'}.'.internal.releaserequired'}; |
|
my $showreqd; |
|
if ($loncaparev) { |
|
$showreqd = &mt('[_1] or newer',$loncaparev); |
|
} else { |
|
$showreqd = &mt('No specific version required'); |
|
} |
|
$datatable .= $showreqd; |
|
|
} else { |
} else { |
$datatable .= &Apache::lonhtmlcommon::textbox($item,$settings->{$item},$items{$item}{size}); |
$datatable .= &Apache::lonhtmlcommon::textbox($item,$settings->{$item},$items{$item}{size}); |
} |
} |
Line 1854 ENDSCRIPT
|
Line 2040 ENDSCRIPT
|
return; |
return; |
} |
} |
|
|
|
sub show_autocoowners { |
|
my (@currcoown) = @_; |
|
my $output = '<i>'.&mt('Co-ownership is set automatically when a Course Coordinator role is assigned to official course personnel (from institutional data).').'</i>'; |
|
if (@currcoown > 0) { |
|
$output .= '<br />'.&mt('Current co-owners are:').' '. |
|
join(', ',map { &Apache::loncommon::plainname(split(':',$_)); } (@currcoown)); |
|
} else { |
|
$output .= '<br />'.&mt('Currently no co-owners.'); |
|
} |
|
return $output; |
|
} |
|
|
|
sub coowner_invitations { |
|
my ($cnum,$cdom,@currcoown) = @_; |
|
my ($output,@pendingcoown,@othercoords); |
|
my $pendingcoowners = |
|
$env{'course.'.$env{'request.course.id'}.'.internal.pendingco-owners'}; |
|
if ($pendingcoowners) { |
|
@pendingcoown = split(',',$pendingcoowners); |
|
} |
|
my $ccrole = 'cc'; |
|
my %ccroles = &Apache::lonnet::get_my_roles($cnum,$cdom,undef,undef,[$ccrole]); |
|
foreach my $key (sort(keys(%ccroles))) { |
|
my ($ccname,$ccdom,$role) = split(':',$key); |
|
next if ($key eq $env{'user.name'}.':'.$env{'user.domain'}.':'.$ccrole); |
|
unless (grep(/^\Q$ccname\E:\Q$ccdom\E$/,@currcoown,@pendingcoown)) { |
|
push(@othercoords,$ccname.':'.$ccdom); |
|
} |
|
} |
|
my $coowner_rows = @currcoown + @pendingcoown + @othercoords; |
|
if ($coowner_rows) { |
|
$output .= &Apache::loncommon::start_data_table(); |
|
if (@currcoown) { |
|
$output .= &Apache::loncommon::start_data_table_row(). |
|
'<td><i>'.&mt('Current co-owners').'</i></td><td>'; |
|
foreach my $person (@currcoown) { |
|
my ($co_uname,$co_dom) = split(':',$person); |
|
$output .= '<span class="LC_nobreak"><label><input type="checkbox" name="coowners" checked="checked" value="'.$person.'" />'.&Apache::loncommon::plainname($co_uname,$co_dom).'</label></span>'.(' 'x2).' '; |
|
} |
|
$output .= '</td>'. |
|
&Apache::loncommon::end_data_table_row(); |
|
} |
|
if ($pendingcoowners) { |
|
$output .= &Apache::loncommon::start_data_table_row(). |
|
'<td><i>'.&mt('Invited as co-owners [_1](agreement pending)','<br />').'</i></td><td>'; |
|
foreach my $person (@pendingcoown) { |
|
my ($co_uname,$co_dom) = split(':',$person); |
|
$output .= '<span class="LC_nobreak"><label><input type="checkbox" name="pendingcoowners" checked="checked" value="'.$person.'" />'.&Apache::loncommon::plainname($co_uname,$co_dom).'</label></span>'.(' 'x2).' '; |
|
} |
|
$output .= '</td>'. |
|
&Apache::loncommon::end_data_table_row(); |
|
} |
|
if (@othercoords) { |
|
$output .= &Apache::loncommon::start_data_table_row(). |
|
'<td><i>'.&mt('Invite other Coordinators [_1]to become co-owners','<br />').'</i></td><td>'; |
|
foreach my $person (@othercoords) { |
|
my ($co_uname,$co_dom) = split(':',$person); |
|
$output .= '<span class="LC_nobreak"><label><input type="checkbox" name="invitecoowners" value="'.$person.'" />'.&Apache::loncommon::plainname($co_uname,$co_dom).'</label></span>'.(' 'x2).' '; |
|
} |
|
$output .= '</td>'. |
|
&Apache::loncommon::end_data_table_row(); |
|
} |
|
$output .= &Apache::loncommon::end_data_table(); |
|
} else { |
|
$output = &mt('There are no coordinators to select as co-owners'); |
|
} |
|
return $output; |
|
} |
|
|
|
sub manage_coownership { |
|
my ($cnum,$cdom,@currcoown) = @_; |
|
my (@pendingcoown); |
|
my $pendingcoowners = |
|
$env{'course.'.$env{'request.course.id'}.'.internal.pendingco-owners'}; |
|
if ($pendingcoowners) { |
|
@pendingcoown = split(',',$pendingcoowners); |
|
} |
|
my ($is_coowner,$is_pending,$output); |
|
my $uname = $env{'user.name'}; |
|
my $udom = $env{'user.domain'}; |
|
if (grep(/^\Q$uname\E:\Q$udom\E$/,@currcoown)) { |
|
$is_coowner = 1; |
|
} |
|
if (grep(/^\Q$uname\E:\Q$udom\E$/,@pendingcoown)) { |
|
$is_pending = 1; |
|
} |
|
if (@currcoown && ($is_coowner || $is_pending)) { |
|
$output = &Apache::loncommon::start_data_table(); |
|
} |
|
if (@currcoown) { |
|
if ($is_coowner || $is_pending) { |
|
$output .= &Apache::loncommon::start_data_table(). |
|
&Apache::loncommon::start_data_table_row().'<td>'; |
|
} |
|
$output .= &mt('Current co-owners are:').' '. |
|
join(', ', map { &Apache::loncommon::plainname(split(':',$_)); } (@currcoown)); |
|
if ($is_coowner || $is_pending) { |
|
$output .= '</td>'.&Apache::loncommon::end_data_table_row(); |
|
} |
|
} |
|
if ($is_coowner || $is_pending) { |
|
if (@currcoown) { |
|
$output .= &Apache::loncommon::start_data_table_row().'<td>'; |
|
} |
|
$output .= '<span class="LC_nobreak">'; |
|
if ($is_coowner) { |
|
$output .= &mt('You are currently a co-owner:').' <label><input type="checkbox" name="remove_coowoner" value="'.$uname.':'.$udom.'" />'.&mt('Discontinue?').'</label>'; |
|
} else { |
|
$output .= &mt('The course owner has invited you to become a co-owner:').' <label><input type="radio" name="pending_coowoner" value="accept" />'.&mt('Accept?').'</label>'.(' 'x2). |
|
'<label><input type="radio" name=pending_coowoner" value="decline" />'.&mt('Decline?').'</label>'; |
|
} |
|
$output .= '</span>'; |
|
if (@currcoown) { |
|
$output .= '</td>'.&Apache::loncommon::end_data_table_row(); |
|
} |
|
} |
|
if (@currcoown && ($is_coowner || $is_pending)) { |
|
$output .= &Apache::loncommon::end_data_table(); |
|
} |
|
return $output; |
|
} |
|
|
sub print_localization { |
sub print_localization { |
my ($cdom,$settings,$ordered,$itemtext,$rowtotal) = @_; |
my ($cdom,$settings,$ordered,$itemtext,$rowtotal) = @_; |
unless ((ref($settings) eq 'HASH') && (ref($ordered) eq 'ARRAY') && (ref($itemtext) eq 'HASH')) { |
unless ((ref($settings) eq 'HASH') && (ref($ordered) eq 'ARRAY') && (ref($itemtext) eq 'HASH')) { |
Line 2263 sub role_checkboxes {
|
Line 2571 sub role_checkboxes {
|
$output .= '<tr>'; |
$output .= '<tr>'; |
} |
} |
} |
} |
$output .= '<td align="left"><span class="LC_nobreak"><label><input type="checkbox" name='. |
$output .= '<td align="left"><span class="LC_nobreak"><label><input type="checkbox" name="'. |
$item.'" value="'.$role.'"'.$checked.'/> '. |
$item.'" value="'.$role.'"'.$checked.'/> '. |
$plrole.'</label></span></td>'; |
$plrole.'</label></span></td>'; |
if ($showsections) { |
if ($showsections) { |
Line 2295 sub role_checkboxes {
|
Line 2603 sub role_checkboxes {
|
$output .= '<tr>'; |
$output .= '<tr>'; |
} |
} |
} |
} |
$output .= '<td><span class="LC_nobreak"><label><input type="checkbox" name='. |
$output .= '<td><span class="LC_nobreak"><label><input type="checkbox" name="'. |
$item.'" value="'.$value.'"'.$checked.' /> '.$rolename. |
$item.'" value="'.$value.'"'.$checked.' /> '.$rolename. |
'</label></span></td>'; |
'</label></span></td>'; |
if ($showsections) { |
if ($showsections) { |
Line 2331 sub print_classlists {
|
Line 2639 sub print_classlists {
|
@ordered = ('nothideprivileged'); |
@ordered = ('nothideprivileged'); |
} else { |
} else { |
@ordered = ('student_classlist_view', |
@ordered = ('student_classlist_view', |
'student_opt_in','student_classlist_portfiles'); |
'student_classlist_opt_in', |
|
'student_classlist_portfiles'); |
} |
} |
my %lt; |
my %lt; |
|
|
Line 2370 sub print_classlists {
|
Line 2679 sub print_classlists {
|
options => \%lt, |
options => \%lt, |
order => ['disabled','all','section'], |
order => ['disabled','all','section'], |
}, |
}, |
'student_opt_in' => { |
'student_classlist_opt_in' => { |
text => '<b>'.&mt($itemtext->{'student_opt_in'}).'</b>', |
text => '<b>'.&mt($itemtext->{'student_classlist_opt_in'}).'</b>', |
input => 'radio', |
input => 'radio', |
}, |
}, |
|
|
Line 2448 sub print_grading {
|
Line 2757 sub print_grading {
|
input => 'selectbox', |
input => 'selectbox', |
options => { |
options => { |
standard => &mt('Standard: shows points'), |
standard => &mt('Standard: shows points'), |
|
categories => &mt('Categories: shows points according to categories'), |
external => &mt('External: shows number of completed parts and totals'), |
external => &mt('External: shows number of completed parts and totals'), |
externalnototals => &mt('External: shows only number of completed parts'), |
externalnototals => &mt('External: shows only number of completed parts'), |
spreadsheet => &mt('Spreadsheet: (with link to detailed scores)'), |
spreadsheet => &mt('Spreadsheet: (with link to detailed scores)'), |
}, |
}, |
order => ['standard','external','externalnototals','spreadsheet'], |
order => ['standard','categories','external','externalnototals','spreadsheet'], |
}, |
}, |
'rndseed' => { |
'rndseed' => { |
text => '<b>'.&mt($itemtext->{'rndseed'}).'</b>'. |
text => '<b>'.&mt($itemtext->{'rndseed'}).'</b>'. |
Line 3007 sub substitution_selector {
|
Line 3317 sub substitution_selector {
|
a => 'assignment note', |
a => 'assignment note', |
); |
); |
my $output .= &mt('Substitution').'<br />'. |
my $output .= &mt('Substitution').'<br />'. |
'<select name=""printfmthdr_sub__'.$num.'">'; |
'<select name="printfmthdr_sub_'.$num.'">'; |
if ($subst eq '') { |
if ($subst eq '') { |
$output .= '<option value="" selected="selected"> </option>'; |
$output .= '<option value="" selected="selected"> </option>'; |
} |
} |