--- loncom/interface/courseprefs.pm 2010/02/22 15:59:28 1.8.2.8 +++ loncom/interface/courseprefs.pm 2010/01/07 18:21:25 1.16 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set configuration settings for a course # -# $Id: courseprefs.pm,v 1.8.2.8 2010/02/22 15:59:28 raeburn Exp $ +# $Id: courseprefs.pm,v 1.16 2010/01/07 18:21:25 faziophi Exp $ # # Copyright Michigan State University Board of Trustees # @@ -28,185 +28,6 @@ ############################################################### ############################################################## -=pod - -=head1 NAME - -courseprefs- Handler to set/modify course configuration - -=head1 SYNOPSIS - -courseprefs provides an interface for setting general course configuration - -=head1 DESCRIPTION - -This module is used for configuration of a course - -=head1 INTERNAL SUBROUTINES - -=over - -=item get_allitems() - -=item print_config_box() - -=item process_changes() - -=item get_sec_str() - -=item check_clone() - -=item store_changes() - -=item update_env() - -=item display_disallowed() - -=item get_course() - -=item get_jscript() - -=item cloners_javascript() - -=item print_courseinfo() - -=item new_cloners_dom_row() - -=item can_modify_catsettings() - -=item assign_course_categories() - -=item print_localization() - -=item get_lang_choices() - -=item print_feedback() - -=item user_table() - -=item select_recipient() - -=item select_sections() - -=item print_discussion() - -=item role_checkboxes() - -=item print_classlists() - -=item print_appearance() - -=item print_grading() - -=item print_printouts() - -=item print_spreadsheet() - -=item print_bridgetasks() - -=item print_other() - -=item get_other_items() - -=item item_table_row_start() - -=item item_table_row_end() - -=item yes_no_radio() - -=item select_from_options() - -=item make_item_rows() - -Creates table used to display and set course configuration items. - -Inputs: $cdom,$items,$ordered,$settings,$rowtotal,$crstype -where $cdom is course's domain, $items is HASH ref for current config -item, $ordered is ARRAY ref of items to include in row in -display order, $settings is HASH ref of current values forrow, -$rowtotal is SCALAR ref used to accumulate row count, $crstype is -course type. - -Returns: $datatable -HTML mark-up of data table which accumulates individual rows. - -=item nothidepriv_row() - -Creates row containing form elements used to display and set -whether Domain coordinators who are currently included in -advanced course user .db file for a course are to be hidden (e.g., -in syllabus, or from course user lists). - -Inputs: $cdom,$item,$settings,$crstype -where $cdom is course domain, item is nothideprivileged, $settings is -HASH ref of the current values for nothideprivileged, $crstype is -course type (Course or Community). - -Returns: $datatable -HTML mark-up for Privileged users (Domain Coordinators) in staff listing. - -=item print_hdrfmt_row() - -Creates row containing form elements used to display and set -substitution items and text to be used in the header included -on printouts. - -Inputs: $item,$settings -where $item is print_header_format, and $settings is a HASH ref -of the current values stored for print_header_format. - -Returns: $output -HTML mark-up containing Javascript functions: reOrder() and getIndexByName() -used to dynamically update position selectboxes, and HTML table elements -for the "Print header format" row. - -=item position_selector() - -Creates a select box which can be used to reorder substitutions -and text included in a printout header. - -Inputs: $pos,$num,$maxnum -where $pos is current position, $num is the unique identifier, -and $maxnum is the total number of items (both substitutions -and text in the printout header. - -Returns: $output -HTML mark-up for the selectbox and a hidden form element containing -the current position. - -=item substitution_selector() - -Creates a combination of select box for choosing an item -(student name, course ID or assignment note) to substitute, -and a corresponding size limit in the header used for printouts. - -Inputs: $num,$subst,$limit,$crstype -where $num is the unique identifier, $subst is the current -substitution (n,c or a, for name, course or note respectively, -$limit is the current size limit (integer), and $crstype is -course type - course or community. - -Returns: $output -HTML mark-up for selectbox and textbox (separate table cells). - -=item change_clone() - -Modifies the list of courses a user can clone (stored -in the user's environment.db file), called when a -change is made to the list of users allowed to clone -a course. - -Inputs: $action,$cloner -where $action is add or drop, and $cloner is identity of -user for whom cloning ability is to be changed in course. - -Returns: nothing - -=back - -=cut - - package Apache::courseprefs; use strict; @@ -272,7 +93,6 @@ sub handler { gens => 'General community settings', idnu => 'Community ID or number', desc => 'Community Description', - ownr => 'Community Owner', catg => 'Categorize community', excc => 'Exclude from community catalog', clon => 'Users allowed to clone community', @@ -298,7 +118,6 @@ sub handler { gens => 'General course settings', idnu => 'Course ID or number', desc => 'Course Description', - ownr => 'Course Owner', catg => 'Categorize course', excc => 'Exclude from course catalog', clon => 'Users allowed to clone course', @@ -344,11 +163,10 @@ sub handler { help => 'Course_Environment', header => [{col1 => 'Setting', col2 => 'Value'}], - ordered => ['owner','description','courseid','categories', + ordered => ['description','courseid','categories', 'hidefromcat','cloners','externalsyllabus', 'url','rolenames'], itemtext => { - owner => $lt{'ownr'}, description => $lt{'desc'}, courseid => $lt{'idnu'}, categories => $lt{'catg'}, @@ -463,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' => @@ -547,16 +366,11 @@ sub print_config_box { my $itemtext = $item->{'itemtext'}; my $rowtotal = 0; my $output = - '
'. - &mt($item->{text}).' '. - &Apache::loncommon::help_open_topic($item->{'help'}).' | '."\n". - '|||||
---|---|---|---|---|---|
|
- |||||
|
- |||||
'; +'; return ($output,$rowtotal); } @@ -749,14 +551,10 @@ sub process_changes { my @cloners = split(',',$env{'form.'.$entry}); my @okcloners; foreach my $cloner (@cloners) { - $cloner =~ s/^\s+//; - $cloner =~ s/\s+$//; - unless ($cloner eq '') { - my ($uname,$udom) = split(':',$cloner); - if (&check_clone($udom,$disallowed,$uname) eq 'ok') { - if (!grep(/^\Q$cloner\E$/,@okcloners)) { - push(@okcloners,$cloner); - } + my ($uname,$udom) = split(':',$cloner); + if (&check_clone($udom,$disallowed,$uname) eq 'ok') { + if (!grep(/^\Q$cloner\E$/,@okcloners)) { + push(@okcloners,$cloner); } } } @@ -1046,7 +844,7 @@ sub check_clone { sub store_changes { my ($cdom,$cnum,$prefs_order,$actions,$prefs,$values,$changes,$crstype) = @_; my ($chome,$output); - my (%storehash,@delkeys,@need_env_update,@oldcloner); + my (%storehash,@delkeys,@need_env_update); if ((ref($values) eq 'HASH') && (ref($changes) eq 'HASH')) { %storehash = %{$values}; } else { @@ -1171,13 +969,19 @@ sub store_changes { if (defined($yesno{$key})) { $displayval = &mt('No'); if ($changes->{$item}{$key} eq 'yes') { - $displayval = &mt('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 .= ' '; @@ -1241,10 +1027,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); + } else { + foreach my $key (@delkeys) { + &Apache::lonnet::delenv('course.'.$cdom.'_'.$cnum.'.'.$key); + } } } if (@need_env_update) { @@ -1533,9 +1319,6 @@ sub print_courseinfo { input => 'textbox', size => '25', }, - 'owner' => { - text => ''.&mt($itemtext->{'owner'}).'', - }, 'courseid' => { text => ''.&mt($itemtext->{'courseid'}).' '.'('. &mt('internal, optional').')', @@ -1544,7 +1327,7 @@ sub print_courseinfo { }, 'cloners' => { text => ''.&mt($itemtext->{'cloners'}).' '. - &mt('Owner and Coordinators included automatically'), + &mt('Coordinators included automatically'), input => 'textbox', size => '40', }, @@ -1616,19 +1399,11 @@ sub print_courseinfo { if (@entries > 0) { foreach my $entry (@entries) { my ($uname,$udom) = split(/:/,$entry); - my ($uname,$udom) = split(/:/,$entry); - if ($udom =~ /^$match_domain$/) { - unless (&Apache::lonnet::domain($udom)) { - next; - } - } else { - next; - } if ($uname eq '*') { $datatable .= &Apache::loncommon::start_data_table_row(). ' '.
- &mt('Any user in domain:').' '.$udom.
+ &mt('Domain:').' '.$udom.
' | '.
&Apache::loncommon::end_data_table_row();
$num ++;
- } elsif (&Apache::lonnet::homeserver($uname,$udom) ne 'no_host') {
- unless (grep(/^\Q$entry\E$/,@cloners)) {
- push(@cloners,$entry);
- }
+ } else {
+ push(@cloners,$entry);
}
}
}
@@ -1695,18 +1468,6 @@ sub print_courseinfo {
$datatable .= ''.
&Apache::lonhtmlcommon::textbox($item.'_display',$settings->{$item},
$items{$item}{size},$launcher);
- } elsif ($item eq 'owner') {
- my $owner = $env{'course.'.$env{'request.course.id'}.'.internal.courseowner'};
- if ($owner =~ /:/) {
- my ($ownername,$ownerdom) = split(':',$owner);
- $owner = &Apache::loncommon::plainname($ownername,$ownerdom);
- } elsif ($owner ne '') {
- $owner = &Apache::loncommon::plainname($owner,$cdom);
- } else {
- $owner = &mt('None specified');
- }
- my $domdesc = &Apache::lonnet::domain($cdom,'description');
- $datatable .= $owner;
} else {
$datatable .= &Apache::lonhtmlcommon::textbox($item,$settings->{$item},$items{$item}{size});
}
@@ -1989,11 +1750,11 @@ sub print_feedback {
my %sections = &Apache::loncommon::get_sections($cdom,$cnum);
my @sections = sort( { $a <=> $b } keys(%sections));
my %lt = &Apache::lonlocal::texthash (
- currone => 'Current recipient:',
- currmult => 'Current recipients:',
- add => 'Additional recipient:',
- del => 'Delete?',
- sec => 'Sections:',
+ currone => 'Current recipient:',
+ curmult => 'Current recipients:',
+ add => 'Additional recipient:',
+ del => 'Delete?',
+ sec => 'Sections:',
);
foreach my $item (@{$ordered}) {
@@ -2054,7 +1815,7 @@ sub user_table {
if ($num) {
$output .= ''. ' ';
- if ($num == 1) {
+ if ($num > 1) {
$output .= $lt->{'currone'};
} else {
$output .= $lt->{'currmult'};
@@ -2174,11 +1935,11 @@ sub print_discussion {
my %sections = &Apache::loncommon::get_sections($cdom,$cnum);
my @sections = sort( { $a <=> $b } keys(%sections));
my %lt = &Apache::lonlocal::texthash (
- currone => 'Disallowed:',
- currmult => 'Disallowed:',
- add => 'Disallow more:',
- del => 'Delete?',
- sec => 'Sections:',
+ currone => 'Disallowed:',
+ curmult => 'Disallowed:',
+ add => 'Disallow more:',
+ del => 'Delete?',
+ sec => 'Sections:',
);
foreach my $item (@{$ordered}) {
@@ -2534,6 +2295,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);
}
@@ -2868,9 +2639,9 @@ sub print_hdrfmt_row {
$currstr .= ''.&mt('Current print header:').' '.
$settings->{$item}.' | '; my @current = split(/(%\d*[nca])/,$settings->{$item}); - foreach my $val (@current) { - unless ($val eq '') { - push(@curr,$val); + foreach my $item (@current) { + unless ($item eq '') { + push(@curr,$item); } } $currnum = @curr; @@ -3023,66 +2794,4 @@ sub substitution_selector { return $output; } -sub change_clone { - my ($cdom,$cnum,$clonelist,$oldcloner) = @_; - my $clone_crs = $cnum.':'.$cdom; - if ($cnum && $cdom) { - my $clone_crs = $cnum.':'.$cdom; - my @allowclone; - if ($clonelist =~ /,/) { - @allowclone = split(',',$clonelist); - } else { - $allowclone[0] = $clonelist; - } - foreach my $currclone (@allowclone) { - if (!grep(/^$currclone$/,@$oldcloner)) { - if ($currclone ne '*') { - my ($uname,$udom) = split(/:/,$currclone); - if ($uname && $udom && $uname ne '*') { - if (&Apache::lonnet::homeserver($uname,$udom) ne 'no_host') { - my %currclonecrs = &Apache::lonnet::dump('environment',$udom,$uname,'cloneable'); - if ($currclonecrs{'cloneable'} !~ /\Q$clone_crs\E/) { - if ($currclonecrs{'cloneable'} eq '') { - $currclonecrs{'cloneable'} = $clone_crs; - } else { - $currclonecrs{'cloneable'} .= ','.$clone_crs; - } - &Apache::lonnet::put('environment',\%currclonecrs,$udom,$uname); - } - } - } - } - } - } - foreach my $oldclone (@$oldcloner) { - if (!grep(/^\Q$oldclone\E$/,@allowclone)) { - if ($oldclone ne '*') { - my ($uname,$udom) = split(/:/,$oldclone); - if ($uname && $udom && $uname ne '*' ) { - if (&Apache::lonnet::homeserver($uname,$udom) ne 'no_host') { - my %currclonecrs = &Apache::lonnet::dump('environment',$udom,$uname,'cloneable'); - my %newclonecrs = (); - if ($currclonecrs{'cloneable'} =~ /\Q$clone_crs\E/) { - if ($currclonecrs{'cloneable'} =~ /,/) { - my @currclonecrs = split/,/,$currclonecrs{'cloneable'}; - foreach my $crs (@currclonecrs) { - if ($crs ne $clone_crs) { - $newclonecrs{'cloneable'} .= $crs.','; - } - } - $newclonecrs{'cloneable'} =~ s/,$//; - } else { - $newclonecrs{'cloneable'} = ''; - } - &Apache::lonnet::put('environment',\%newclonecrs,$udom,$uname); - } - } - } - } - } - } - } - return; -} - 1; |