--- loncom/interface/courseprefs.pm 2009/11/05 14:48:39 1.10
+++ loncom/interface/courseprefs.pm 2009/11/30 06:23:32 1.14
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set configuration settings for a course
#
-# $Id: courseprefs.pm,v 1.10 2009/11/05 14:48:39 raeburn Exp $
+# $Id: courseprefs.pm,v 1.14 2009/11/30 06:23:32 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -101,7 +101,7 @@ sub handler {
date => 'Locale used for community calendar',
coco => 'Community Content',
copo => 'Community Policy',
- priv => 'Domain Coodinators in community',
+ priv => 'Domain Coordinators in community',
defd => 'Default dates for member access',
stuv => 'Member-viewable membership list options',
stul => 'Member agreement needed to be listed',
@@ -126,7 +126,7 @@ sub handler {
date => 'Locale used for course calendar',
coco => 'Course Content',
copo => 'Course Policy',
- priv => 'Domain Coodinators in course',
+ priv => 'Domain Coordinators in course',
defd => 'Default dates for student access',
stuv => 'Student-viewable classlist options',
stul => 'Student agreement needed to be listed',
@@ -281,13 +281,14 @@ sub handler {
col2 => 'Value',}],
ordered => ['problem_stream_switch','suppress_tries',
'default_paper_size','print_header_format',
- 'disableexampointprint'],
+ 'disableexampointprint','canuse_pdfforms'],
itemtext => {
problem_stream_switch => 'Allow problems to be split over pages',
suppress_tries => 'Suppress number of tries in printing',
default_paper_size => 'Default paper type',
print_header_format => 'Print header format',
disableexampointprint => 'Disable automatically printing point values on exams',
+ canuse_pdfforms => 'Users can print problems as PDF forms and upload later for grading',
},
},
'spreadsheet' =>
@@ -332,7 +333,7 @@ sub handler {
\@prefs_order,\%prefs,\%values,
$cnum,undef,\@allitems);
} elsif ($phase eq 'display') {
- my $jscript = &get_jscript($cdom,$phase);
+ my $jscript = &get_jscript($cdom,$phase,$crstype);
my @allitems = &get_allitems(%prefs);
&Apache::lonconfigsettings::display_settings($r,$cdom,$phase,$context,
\@prefs_order,\%prefs,\%values,undef,$jscript,\@allitems,$crstype);
@@ -983,15 +984,21 @@ sub store_changes {
$displayname = &mt($text);
}
if (defined($yesno{$key})) {
- $displayval = 'no';
+ $displayval = &mt('No');
if ($changes->{$item}{$key} eq 'yes') {
- $displayval = 'yes';
+ $displayval = &mt('Yes');
}
} elsif (($key =~ /^default_enrollment_(start|end)_date$/) && ($displayval)) {
$displayval = &Apache::lonlocal::locallocaltime($displayval);
} elsif ($key eq 'categories') {
$displayval = $env{'form.categories_display'};
- }
+ } elsif ($key eq 'canuse_pdfforms') {
+ if ($changes->{$item}{$key} eq '1') {
+ $displayval = &mt('Yes');
+ } elsif ($changes->{$item}{$key} eq '0') {
+ $displayval = &mt('No');
+ }
+ }
if ($changes->{$item}{$key} eq '') {
push(@delkeys,$key);
$output .= '
'.&mt('Deleted setting for [_1]',
@@ -1037,6 +1044,10 @@ sub store_changes {
$output .= &mt('An error occurred when removing course settings which are no longer in use.');
}
$output .= '';
+ } else {
+ foreach my $key (@delkeys) {
+ &Apache::lonnet::delenv('course.'.$cdom.'_'.$cnum.'.'.$key);
+ }
}
}
if (@need_env_update) {
@@ -1174,8 +1185,8 @@ sub get_course {
}
sub get_jscript {
- my ($cdom,$phase) = @_;
- my ($can_toggle_cat,$can_categorize) = &can_modify_catsettings($cdom);
+ my ($cdom,$phase,$crstype) = @_;
+ my ($can_toggle_cat,$can_categorize) = &can_modify_catsettings($cdom,$crstype);
my ($jscript,$categorize_js);
my $stubrowse_js = &Apache::loncommon::studentbrowser_javascript();
my $browse_js = &Apache::loncommon::browser_and_searcher_javascript('parmset');
@@ -1294,14 +1305,14 @@ sub print_courseinfo {
if (ref($cathash) eq 'HASH') {
$categoriesform =
&Apache::loncommon::assign_categories_table($cathash,
- $settings->{'categories'})."\n";
+ $settings->{'categories'},$crstype)."\n";
}
}
if (!defined($categoriesform)) {
$categoriesform = &mt('No categories defined for this domain');
}
- my ($can_toggle_cat,$can_categorize) = &can_modify_catsettings($cdom);
+ my ($can_toggle_cat,$can_categorize) = &can_modify_catsettings($cdom,$crstype);
my $replace;
if ($crstype eq 'Community') {
@@ -1507,15 +1518,24 @@ sub new_cloners_dom_row {
}
sub can_modify_catsettings {
- my ($dom) = @_;
+ my ($dom,$crstype) = @_;
my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$dom);
my ($can_toggle_cat,$can_categorize);
if (ref($domconf{'coursecategories'}) eq 'HASH') {
- if ($domconf{'coursecategories'}{'togglecats'} eq 'crs') {
- $can_toggle_cat = 1;
- }
- if ($domconf{'coursecategories'}{'categorize'} eq 'crs') {
- $can_categorize = 1;
+ if ($crstype eq 'Community') {
+ if ($domconf{'coursecategories'}{'togglecatscomm'} eq 'comm') {
+ $can_toggle_cat = 1;
+ }
+ if ($domconf{'coursecategories'}{'categorizecomm'} eq 'comm') {
+ $can_categorize = 1;
+ }
+ } else {
+ if ($domconf{'coursecategories'}{'togglecats'} eq 'crs') {
+ $can_toggle_cat = 1;
+ }
+ if ($domconf{'coursecategories'}{'categorize'} eq 'crs') {
+ $can_categorize = 1;
+ }
}
}
return ($can_toggle_cat,$can_categorize);
@@ -1531,7 +1551,13 @@ sub assign_course_categories {
if (ref($domconf{'coursecategories'}) eq 'HASH') {
$cathash = $domconf{'coursecategories'}{'cats'};
if (ref($cathash) eq 'HASH') {
- $hascats = 1;
+ foreach my $cat (keys(%{$cathash})) {
+ next if ($cat eq 'instcode::0');
+ unless ($crstype eq 'Community') {
+ next if ($cat eq 'communities::0');
+ }
+ $hascats ++;
+ }
}
}
my $catwin_js;
@@ -1597,15 +1623,20 @@ ENDSCRIPT
if ($hascats) {
my %currsettings =
&Apache::lonnet::get('environment',['hidefromcat','categories'],$cdom,$cnum);
- $categoriesform .= $assign.'
'.
- '
';
+ my $cattable = &Apache::loncommon::assign_categories_table($cathash,
+ $currsettings{'categories'},$crstype);
+ if ($cattable eq '') {
+ $categoriesform .= &mt('No suitable categories defined for this course type in this domain.');
+ } else {
+ $categoriesform .= $assign.'
'.
+ '
';
+ }
} else {
- $categoriesform .= &mt('No categories defined for this domain');
+ $categoriesform .= &mt('No categories defined in this domain.');
}
$r->print($start_page.$categoriesform.$end_page);
return;
@@ -2201,10 +2232,11 @@ sub print_grading {
input => 'selectbox',
options => {
standard => &mt('Standard: shows points'),
- external => &mt('External: shows number of completed parts'),
+ external => &mt('External: shows number of completed parts and totals'),
+ externalnototals => &mt('External: shows only number of completed parts'),
spreadsheet => &mt('Spreadsheet: (with link to detailed scores)'),
},
- order => ['standard','external','spreadsheet'],
+ order => ['standard','external','externalnototals','spreadsheet'],
},
'rndseed' => {
text => ''.&mt($itemtext->{'rndseed'}).''.
@@ -2280,6 +2312,16 @@ sub print_printouts {
text => ''.&mt($itemtext->{'disableexampointprint'}).'',
input => 'radio',
},
+ canuse_pdfforms => {
+ text => ''.&mt($itemtext->{'canuse_pdfforms'}).'',
+ input => 'selectbox',
+ options => {
+ 1 => &mt('Yes'),
+ 0 => &mt('No'),
+ },
+ order => ['1','0'],
+ nullval => 'None specified - use domain default',
+ }
);
return &make_item_rows($cdom,\%items,$ordered,$settings,$rowtotal,$crstype);
}