--- loncom/interface/courseprefs.pm 2012/04/11 13:02:39 1.28.2.12 +++ loncom/interface/courseprefs.pm 2011/12/14 23:55:50 1.48 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set configuration settings for a course # -# $Id: courseprefs.pm,v 1.28.2.12 2012/04/11 13:02:39 raeburn Exp $ +# $Id: courseprefs.pm,v 1.48 2011/12/14 23:55:50 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -215,6 +215,7 @@ use Apache::lonnet; use Apache::loncommon(); use Apache::lonhtmlcommon(); use Apache::lonconfigsettings; +use Apache::lonparmset; use Apache::lonlocal; use LONCAPA qw(:DEFAULT :match); @@ -267,8 +268,8 @@ sub handler { my %lt; if ($crstype eq 'Community') { %lt = ( - conf => 'Community Configuration', - edit => 'Edit Community Configuration', + conf => 'Community Settings', + edit => 'Edit Community Settings', gens => 'General community settings', idnu => 'Community ID or number', desc => 'Community Description', @@ -286,7 +287,7 @@ sub handler { defd => 'Default dates for member access', stuv => 'Member-viewable membership list options', stul => 'Member agreement needed to be listed', - clas => 'Membership and Facilitator Listing', + clas => 'Membership and facilitator listing', priv => 'Privileged users (Domain Coordinators) in facilitator listing', defc => 'Default Community Spreadsheet', defs => 'Default User Spreadsheet', @@ -294,8 +295,8 @@ sub handler { ); } else { %lt = ( - conf => 'Course Configuration', - edit => 'Edit Course Configuration', + conf => 'Course Settings', + edit => 'Edit Course Settings', gens => 'General course settings', idnu => 'Course ID or number', desc => 'Course Description', @@ -313,7 +314,7 @@ sub handler { defd => 'Default dates for student access', stuv => 'Student-viewable classlist options', stul => 'Student agreement needed to be listed', - clas => 'Classlists and Staff Listing', + clas => 'Classlists and staff listing', priv => 'Privileged users (Domain Coordinators) in staff listing', defc => 'Default Course Spreadsheet', defs => 'Default Student Spreadsheet', @@ -338,7 +339,7 @@ sub handler { if ($phase eq 'releaseinfo') { my $loncaparev = $env{'course.'.$cid.'.internal.releaserequired'}; - if ($loncaparev) { + if ($loncaparev) { &display_loncaparev_constraints($r,$navmap,$loncaparev,$crstype); return OK; } @@ -352,9 +353,7 @@ sub handler { my %prefs = ( 'courseinfo' => { text => $lt{'gens'}, - help => 'Course_Environment', - header => [{col1 => 'Setting', - col2 => 'Value'}], + help => 'Course_Prefs_General', ordered => ['owner','co-owners','loncaparev','description', 'courseid','categories','hidefromcat', 'externalsyllabus','cloners','url','rolenames'], @@ -373,10 +372,8 @@ sub handler { }, }, 'localization' => - { text => 'Language and Time Localization', - help => 'Course_Environment', - header => [{col1 => 'Setting', - col2 => 'Value',}], + { text => 'Language and time localization', + help => 'Course_Prefs_Language', ordered => ['languages','timezone','datelocale'], itemtext => { languages => 'Languages used', @@ -386,11 +383,9 @@ sub handler { }, 'feedback' => { text => 'Feedback messages', - help => 'Course_Environment', + help => 'Course_Prefs_Feedback', header => [{col1 => 'Questions about:', - col2 => 'Recipients'}, - {col1 => 'Questions about:', - col2 => 'Custom Text'}], + col2 => 'Recipients'}], ordered => ['question.email','comment.email','policy.email'], itemtext => { 'question.email' => 'Resource Content', @@ -400,7 +395,7 @@ sub handler { }, 'discussion' => { text => 'Discussion and Chat', - help => 'Course_Environment', + help => 'Course_Prefs_Discussions', ordered => ['pch.roles.denied','pch.users.denied', 'plc.roles.denied','plc.users.denied', 'allow_limited_html_in_feedback', @@ -416,7 +411,7 @@ sub handler { }, 'classlists' => { text => $lt{'clas'}, - help => 'Course_Environment', + help => 'Course_Prefs_Classlists', header => [{col1 => 'Type', col2 => $lt{'defd'}}, {col1 => 'Setting', @@ -438,9 +433,7 @@ sub handler { }, 'appearance' => { text => 'Display of resources ', - help => 'Course_Environment', - header => [{col1 => 'Setting', - col2 => 'Value',}], + help => 'Course_Prefs_Display', ordered => ['default_xml_style','pageseparators', 'disable_receipt_display','texengine', 'tthoptions'], @@ -454,9 +447,7 @@ sub handler { }, 'grading' => { text => 'Grading', - help => 'Course_Environment', - header => [{col1 => 'Setting', - col2 => 'Value',}], + help => 'Course_Prefs_Grading', ordered => ['grading','rndseed', 'receiptalg','disablesigfigs'], itemtext => { @@ -469,12 +460,10 @@ sub handler { }, 'printouts' => { text => 'Printout generation', - help => 'Course_Environment', - header => [{col1 => 'Setting', - col2 => 'Value',}], + help => 'Course_Prefs_Printouts', 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', @@ -486,9 +475,7 @@ sub handler { }, 'spreadsheet' => { text => 'Spreadsheets', - help => 'Course_Environment', - header => [{col1 => 'Setting', - col2 => 'Value'}], + help => 'Course_Prefs_Spreadsheet', ordered => ['spreadsheet_default_classcalc', 'spreadsheet_default_studentcalc', 'spreadsheet_default_assesscalc','hideemptyrows'], @@ -501,9 +488,7 @@ sub handler { }, 'bridgetasks' => { text => 'Bridge tasks', - help => 'Course_Environment', - header => [{col1 => 'Setting', - col2 => 'Value'}], + help => 'Course_Prefs_Bridgetasks', ordered => ['task_messages','task_grading', 'suppress_embed_prompt'], itemtext => { @@ -514,7 +499,7 @@ sub handler { }, 'other' => { text => 'Other settings', - help => 'Course_Environment', + help => 'Course_Prefs_Other', header => [ {col1 => 'Item', col2 => 'Value', }], @@ -524,15 +509,15 @@ sub handler { my @allitems = &get_allitems(%prefs); &Apache::lonconfigsettings::make_changes($r,$cdom,$phase,$context, \@prefs_order,\%prefs,\%values, - $cnum,undef,\@allitems); + $cnum,undef,\@allitems,'coursepref'); } elsif ($phase eq 'display') { my $jscript = &get_jscript($cid,$cdom,$phase,$crstype); my @allitems = &get_allitems(%prefs); &Apache::lonconfigsettings::display_settings($r,$cdom,$phase,$context, - \@prefs_order,\%prefs,\%values,undef,$jscript,\@allitems,$crstype); + \@prefs_order,\%prefs,\%values,undef,$jscript,\@allitems,$crstype,'coursepref'); } else { &Apache::lonconfigsettings::display_choices($r,$phase,$context, - \@prefs_order,\%prefs); + \@prefs_order,\%prefs,'coursepref'); } return OK; } @@ -569,7 +554,7 @@ sub print_config_box { $output .= ' - '; +
'; if (exists $item->{'header'}->[0]->{'col1'} || exists $item->{'header'}->[0]->{'col2'}) { $output .= ' @@ -589,7 +574,7 @@ sub print_config_box { -
+ '; @@ -605,14 +590,14 @@ sub print_config_box {
'.&mt($item->{'header'}->[1]->{'col1'}).'
'; - if (exists $item->{'header'}->[0]->{'col1'} || - exists $item->{'header'}->[0]->{'col2'}) { + if (exists $item->{'header'}->[2]->{'col1'} || + exists $item->{'header'}->[2]->{'col2'}) { $output .= ' - - + + '; - } + } } } else { $output .= ' @@ -680,21 +665,7 @@ sub process_changes { } } } elsif (ref($item->{'ordered'}) eq 'ARRAY') { - if ($action eq 'courseinfo') { - my ($can_toggle_cat,$can_categorize) = - &can_modify_catsettings($cdom,$crstype); - foreach my $entry (@{$item->{'ordered'}}) { - next if (($entry eq 'hidefromcat') && - (!$can_toggle_cat)); - next if (($entry eq 'categories') && - (!$can_categorize)); - next if (($entry eq 'loncaparev') || - ($entry eq 'owner')); - push(@ordered,$entry); - } - } else { - @ordered = @{$item->{'ordered'}}; - } + @ordered = @{$item->{'ordered'}}; } if (@ordered > 0) { if ($action eq 'feedback') { @@ -736,6 +707,7 @@ sub process_changes { } } else { foreach my $entry (@ordered) { + next if (($entry eq 'loncaparev') || ($entry eq 'owner')); if ($entry eq 'cloners') { if ($env{'form.cloners_all'}) { $newvalues{$entry} = '*'; @@ -1730,6 +1702,7 @@ sub print_courseinfo { '', input => 'textbox', size => '40', + advanced => 1 }, 'description' => { text => ''.&mt($itemtext->{'description'}).'', @@ -1752,13 +1725,14 @@ sub print_courseinfo { text => ''.&mt($itemtext->{'cloners'}).'
'. &mt('Owner and Coordinators included automatically'), input => 'textbox', - size => '40', + size => '40' }, 'rolenames' => { text => ''.&mt($itemtext->{'rolenames'}).'
'. '('.$replace.')', input => 'textbox', size => '20', + advanced => 1 }, 'externalsyllabus' => { text => ''.&mt($itemtext->{'externalsyllabus'}).'
('. @@ -1790,7 +1764,11 @@ sub print_courseinfo { next if (!$can_categorize); } $count ++; - $datatable .= &item_table_row_start($items{$item}{text},$count); + if (exists $items{$item}{advanced} && $items{$item}{advanced} == 1) { + $datatable .= &item_table_row_start($items{$item}{text},$count,"advanced"); + } else { + $datatable .= &item_table_row_start($items{$item}{text},$count); + } if ($items{$item}{input} eq 'radio') { $datatable .= &yesno_radio($item,$settings); } elsif ($item eq 'cloners') { @@ -2139,7 +2117,7 @@ sub display_loncaparev_constraints { if ($key =~ /^\Q$start\E(\[useropt\:($match_username\:$match_domain)\]\.)/) { $middle = $1; $which = $2; - $scope = 'user'; + $scope = 'user'; } elsif ($key =~ /^\Q$start\E(\[(\w+)\]\.)/) { $middle = $1; $which = $2; @@ -2334,7 +2312,7 @@ sub display_loncaparev_constraints { my $mapres_header = '

'. &mt('Requirements for specific folders or resources'). '

'; - if ((keys(%toshow) > 0) || (keys(%byresource) > 0) || + if ((keys(%toshow) > 0) || (keys(%byresource) > 0) || (keys(%bysubmission) > 0) || (keys(%byresponsetype))) { $output .= $mapres_header; } @@ -2349,11 +2327,11 @@ sub display_loncaparev_constraints { &show_contents_view($r,$navmap,$cid,\%toshow,\%bymap,\%byresource,\%bysubmission, \%byresponsetype,\@scopeorder,\%lt); } - $r->print('

'); + $r->print('

'); } else { $r->print('

'. &mt('No version requirements from resource content or settings.'). - '

'); + '

'); } $r->print(&Apache::loncommon::end_page()); return; @@ -2362,7 +2340,7 @@ sub display_loncaparev_constraints { sub show_contents_view { my ($r,$navmap,$cid,$toshow,$bymap,$byresource,$bysubmission,$byresponsetype, $scopeorder,$lt) = @_; - if ((keys(%{$toshow}) > 0) || (keys(%{$byresource}) > 0) || + if ((keys(%{$toshow}) > 0) || (keys(%{$byresource}) > 0) || (keys(%{$bysubmission}) > 0) || (keys(%{$byresponsetype}) > 0)) { my $location=&Apache::loncommon::lonhttpdurl("/adm/lonIcons"); my $whitespace = ''; @@ -2806,14 +2784,18 @@ sub print_feedback { foreach my $item (@{$ordered}) { $count ++; - $datatable .= &item_table_row_start($items{$item}{text},$count); + if ($position eq 'top') { + $datatable .= &item_table_row_start($items{$item}{text},$count); + } else { + $datatable .= &item_table_row_start($items{$item}{text}."
(Custom text)",$count, "advanced"); + } if ($position eq 'top') { my $includeempty = 0; $datatable .= &user_table($cdom,$item,\@sections, $settings->{$item},\%lt); } else { $datatable .= &Apache::lonhtmlcommon::textbox($item.'.text', - $settings->{$item.'.text'},$items{$item}{size}); + $settings->{$item.'.text'},$items{$item}{size}); } $datatable .= &item_table_row_end(); } @@ -3263,11 +3245,12 @@ sub print_grading { input => 'selectbox', options => { standard => &mt('Standard: shows points'), + categories => &mt('Categories: shows points according to categories'), 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','externalnototals','spreadsheet'], + order => ['standard','categories','external','externalnototals','spreadsheet'], }, 'rndseed' => { text => ''.&mt($itemtext->{'rndseed'}).''. @@ -3284,6 +3267,7 @@ sub print_grading { '64bit5' => '64bit5', }, order => ['32bit','64bit','64bit2','64bit3','64bit4','64bit5'], + advanced => 1 }, 'receiptalg' => { text => ''.&mt($itemtext->{'receiptalg'}).'
'. @@ -3295,6 +3279,7 @@ sub print_grading { receipt3 => 'receipt3', }, order => ['receipt','receipt2','receipt3'], + advanced => 1 }, 'disablesigfigs' => { text => ''.&mt($itemtext->{'disablesigfigs'}).'', @@ -3566,7 +3551,11 @@ sub make_item_rows { my $count = 0; foreach my $item (@{$ordered}) { $count ++; - $datatable .= &item_table_row_start($items->{$item}{text},$count); + if (exists $items->{$item}{advanced} && $items->{$item}{advanced} == 1) { + $datatable .= &item_table_row_start($items->{$item}{text},$count,"advanced"); + } else { + $datatable .= &item_table_row_start($items->{$item}{text},$count); + } if ($item eq 'nothideprivileged') { $datatable .= ¬hidepriv_row($cdom,$item,$settings,$crstype); } elsif ($item eq 'print_header_format') {
'.&mt($item->{'header'}->[0]->{'col1'}).''.&mt($item->{'header'}->[0]->{'col2'}).''.&mt($item->{'header'}->[2]->{'col1'}).''.&mt($item->{'header'}->[2]->{'col2'}).'