--- loncom/interface/courseprefs.pm 2010/12/26 05:22:21 1.28.2.8 +++ loncom/interface/courseprefs.pm 2010/12/24 16:50:38 1.36 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set configuration settings for a course # -# $Id: courseprefs.pm,v 1.28.2.8 2010/12/26 05:22:21 raeburn Exp $ +# $Id: courseprefs.pm,v 1.36 2010/12/24 16:50:38 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); @@ -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; } @@ -353,8 +354,6 @@ sub handler { 'courseinfo' => { text => $lt{'gens'}, help => 'Course_Environment', - header => [{col1 => 'Setting', - col2 => 'Value'}], ordered => ['owner','co-owners','loncaparev','description', 'courseid','categories','hidefromcat', 'externalsyllabus','cloners','url','rolenames'], @@ -375,8 +374,6 @@ sub handler { 'localization' => { text => 'Language and Time Localization', help => 'Course_Environment', - header => [{col1 => 'Setting', - col2 => 'Value',}], ordered => ['languages','timezone','datelocale'], itemtext => { languages => 'Languages used', @@ -388,9 +385,7 @@ sub handler { { text => 'Feedback messages', help => 'Course_Environment', 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', @@ -439,8 +434,6 @@ sub handler { 'appearance' => { text => 'Display of resources ', help => 'Course_Environment', - header => [{col1 => 'Setting', - col2 => 'Value',}], ordered => ['default_xml_style','pageseparators', 'disable_receipt_display','texengine', 'tthoptions'], @@ -455,8 +448,6 @@ sub handler { 'grading' => { text => 'Grading', help => 'Course_Environment', - header => [{col1 => 'Setting', - col2 => 'Value',}], ordered => ['grading','rndseed', 'receiptalg','disablesigfigs'], itemtext => { @@ -470,8 +461,6 @@ sub handler { 'printouts' => { text => 'Printout generation', help => 'Course_Environment', - header => [{col1 => 'Setting', - col2 => 'Value',}], ordered => ['problem_stream_switch','suppress_tries', 'default_paper_size','print_header_format', 'disableexampointprint','canuse_pdfforms'], @@ -487,8 +476,6 @@ sub handler { 'spreadsheet' => { text => 'Spreadsheets', help => 'Course_Environment', - header => [{col1 => 'Setting', - col2 => 'Value'}], ordered => ['spreadsheet_default_classcalc', 'spreadsheet_default_studentcalc', 'spreadsheet_default_assesscalc','hideemptyrows'], @@ -502,8 +489,6 @@ sub handler { 'bridgetasks' => { text => 'Bridge tasks', help => 'Course_Environment', - header => [{col1 => 'Setting', - col2 => 'Value'}], ordered => ['task_messages','task_grading', 'suppress_embed_prompt'], itemtext => { @@ -559,17 +544,12 @@ sub print_config_box { my $itemtext = $item->{'itemtext'}; my $rowtotal = 0; my $output = - ' - - '."\n". - ''; + '

'.&mt($item->{text}).'

+
 '. + &Apache::loncommon::help_open_topic($item->{'help'}).''; if (($action eq 'feedback') || ($action eq 'classlists')) { $output .= ' -
- - - - - - - '; + $output .= ''; foreach my $which (sort(keys(%{$fromparam{$rev}{$scope}}))) { $output .= ''; @@ -2228,7 +2205,7 @@ sub display_loncaparev_constraints { if ($newrow) { $output .= &Apache::loncommon::continue_data_table_row(); } - $output .= ''. &Apache::loncommon::end_data_table_row(); $newrow = 1; @@ -2321,7 +2298,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; } @@ -2334,22 +2311,21 @@ sub display_loncaparev_constraints { $r->print($output); if (defined($navmap)) { &show_contents_view($r,$navmap,$cid,\%toshow,\%bymap,\%byresource,\%bysubmission, - \%byresponsetype,\@scopeorder,\%lt); + \%byresponsetype,\@scopeorder); } - $r->print('

'); + $r->print('

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

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

'); + '

'); } $r->print(&Apache::loncommon::end_page()); return; } sub show_contents_view { - my ($r,$navmap,$cid,$toshow,$bymap,$byresource,$bysubmission,$byresponsetype, - $scopeorder,$lt) = @_; - if ((keys(%{$toshow}) > 0) || (keys(%{$byresource}) > 0) || + my ($r,$navmap,$cid,$toshow,$bymap,$byresource,$bysubmission,$byresponsetype,$scopeorder) = @_; + if ((keys(%{$toshow}) > 0) || (keys(%{$byresource}) > 0) || (keys(%{$bysubmission}) > 0) || (keys(%{$byresponsetype}) > 0)) { my $location=&Apache::loncommon::lonhttpdurl("/adm/lonIcons"); my $whitespace = ''; @@ -2362,7 +2338,7 @@ sub show_contents_view { &Apache::loncommon::end_data_table_header_row(). &Apache::loncommon::start_data_table_row(). ''); - &releases_by_map($r,$bymap,$topmap,$scopeorder,$lt); + &releases_by_map($r,$bymap,$topmap,$scopeorder); $r->print(&Apache::loncommon::end_data_table_row()); my $it=$navmap->getIterator(undef,undef,undef,1,1,undef); my $curRes; @@ -2430,7 +2406,7 @@ sub show_contents_view { $r->print('
'. - &mt($item->{text}).' '. - &Apache::loncommon::help_open_topic($item->{'help'}).'
- '; +
'; if (exists $item->{'header'}->[0]->{'col1'} || exists $item->{'header'}->[0]->{'col2'}) { $output .= ' @@ -586,10 +566,6 @@ sub print_config_box { } $output .= '
-
'; @@ -600,10 +576,6 @@ sub print_config_box { $output .= &print_classlists('middle',$cdom,$settings,$itemtext,\$rowtotal,$crstype). '
'.&mt($item->{'header'}->[1]->{'col1'}).'
-
'; if (exists $item->{'header'}->[0]->{'col1'} || exists $item->{'header'}->[0]->{'col2'}) { @@ -612,12 +584,10 @@ sub print_config_box { '; - } + } } } else { $output .= ' - - - -
'.&mt($item->{'header'}->[0]->{'col1'}).' '.&mt($item->{'header'}->[0]->{'col2'}).'
'; if (exists $item->{'header'}->[0]->{'col1'} || exists $item->{'header'}->[0]->{'col2'}) { @@ -654,9 +624,7 @@ sub print_config_box { } $output .= '
-

'; +'; return ($output,$rowtotal); } @@ -1717,6 +1685,7 @@ sub print_courseinfo { '', input => 'textbox', size => '40', + advanced => 1 }, 'description' => { text => ''.&mt($itemtext->{'description'}).'', @@ -1740,12 +1709,14 @@ sub print_courseinfo { &mt('Owner and Coordinators included automatically'), input => 'textbox', size => '40', + advanced => 1 }, 'rolenames' => { text => ''.&mt($itemtext->{'rolenames'}).'
'. '('.$replace.')', input => 'textbox', size => '20', + advanced => 1 }, 'externalsyllabus' => { text => ''.&mt($itemtext->{'externalsyllabus'}).'
('. @@ -1777,7 +1748,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') { @@ -1926,7 +1901,7 @@ sub print_courseinfo { my $showreqd; if ($loncaparev) { $showreqd = &mt('[_1] or newer',$loncaparev).' '. - &mt('Details').''; + &mt('Details').'', } else { $showreqd = &mt('No specific version required'); } @@ -2094,21 +2069,23 @@ sub display_loncaparev_constraints { my $cdom = $env{'course.'.$cid.'.domain'}; my $cnum = $env{'course.'.$cid.'.num'}; my $output; - my %lt = &Apache::lonlocal::texthash ( - 'all' => 'all', - 'section/group' => 'section/group', - 'user' => 'user', - ); my (%checkparms,%checkresponsetypes,%checkcrstypes,%anonsurvey,%randomizetry); &Apache::loncommon::build_release_hashes(\%checkparms,\%checkresponsetypes, \%checkcrstypes,\%anonsurvey,\%randomizetry); + +# my %paramstrings = +# ('string_questiontype' => +# [[ 'anonsurveycred', 'Anonymous Survey'], +# [ 'anonsurvey', 'Anonymous Survey'], +# [ 'randomizetry', 'New Randomization Each N Tries']] +# ); if (defined($checkcrstypes{$crstype})) { $output .= '

'.&mt('Course type: [_1] requires [_2] or newer',$crstype, $checkcrstypes{$crstype}).'

'; } my (%fromparam,%rowspan,%bymap,%byresource,@scopeorder,%toshow,%allmaps, %byresponsetype,%bysubmission); - @scopeorder = ('all','section/group','user'); + @scopeorder = ('course','section/group','user'); my $resourcedata = &Apache::lonparmset::readdata($cnum,$cdom); if (ref($resourcedata) eq 'HASH') { foreach my $key (keys(%{$resourcedata})) { @@ -2126,18 +2103,18 @@ 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; $scope = 'section/group'; } else { - $scope = 'all'; + $scope = 'course'; } my $what="$stdname=$valname"; if ($key =~ /^\Q$start$middle\E\w+\.\Q$item\E$/) { $level = 'general'; - if ($scope eq 'all') { + if ($scope eq 'course') { if (ref($fromparam{$rev}{$scope}) eq 'ARRAY') { unless(grep(/^\Q$what\E$/,@{$fromparam{$rev}{$scope}})) { push(@{$fromparam{$rev}{$scope}},$what); @@ -2158,7 +2135,7 @@ sub display_loncaparev_constraints { } elsif ($key =~ /^\Q$start$middle\E(.+)___\(all\).\w+\.\Q$item\E$/) { $level = 'folder'; $map = $1; - if ($scope eq 'all') { + if ($scope eq 'course') { if (ref($bymap{$map}{$rev}{$scope}) eq 'ARRAY') { unless(grep(/^\Q$what\E$/,@{$bymap{$map}{$rev}{$scope}})) { push(@{$bymap{$map}{$rev}{$scope}},$what); @@ -2178,7 +2155,7 @@ sub display_loncaparev_constraints { } elsif ($key =~ /^\Q$start$middle\E(.+)\.\w+\.\Q$item\E$/) { $level = 'resource'; $resource = $1; - if ($scope eq 'all') { + if ($scope eq 'course') { if (ref($byresource{$resource}{$rev}{$scope}) eq 'ARRAY') { unless(grep(/^\Q$what\E$/,@{$byresource{$resource}{$rev}{$scope}})) { push(@{$byresource{$resource}{$rev}{$scope}},$what); @@ -2217,7 +2194,7 @@ sub display_loncaparev_constraints { if ($newrow) { $output .= &Apache::loncommon::continue_data_table_row(); } - $output .= '
'.$lt{$scope}.''.$scope.''.$which.''. join('
',@{$fromparam{$rev}{$scope}{$which}}).'
'.$lt{$scope}.' '. + $output .= ''.$scope.' '. join('
',@{$fromparam{$rev}{$scope}}).'
 '.$icon.' '.&mt('Main Course Documents').'
'); foreach my $scope (@{$scopeorder}) { if (ref($byresource->{$symb}{$rev}{$scope}) eq 'HASH') { - $r->print(''); + $r->print(''); foreach my $which (sort(keys(%{$byresource->{$symb}{$rev}{$scope}}))) { $r->print(''); } elsif (ref($byresource->{$symb}{$rev}{$scope}) eq 'ARRAY') { - $r->print(''. + $r->print(''. ''); } @@ -2487,7 +2463,7 @@ sub show_contents_view { } sub releases_by_map { - my ($r,$bymap,$url,$scopeorder,$lt) = @_; + my ($r,$bymap,$url,$scopeorder) = @_; return unless ((ref($bymap) eq 'HASH') && (ref($scopeorder) eq 'ARRAY')); if (ref($bymap->{$url}) eq 'HASH') { foreach my $rev (sort(keys(%{$bymap->{$url}}))) { @@ -2496,7 +2472,7 @@ sub releases_by_map { $r->print('
'.&mt('Setting - scope: [_1]',$lt->{$scope}).'
'.&mt('Setting - scope: [_1]',$scope).''.$which.''. join('
',@{$byresource->{$symb}{$rev}{$scope}{$which}}). @@ -2438,7 +2414,7 @@ sub show_contents_view { } $r->print('
'.&mt('Setting - scope: [_1]',$lt->{$scope}).'
'.&mt('Setting - scope: [_1]',$scope).' '. join('
',@{$byresource->{$symb}{$rev}{$scope}}).'
'); foreach my $scope (@{$scopeorder}) { if (ref($bymap->{$url}{$rev}{$scope}) eq 'HASH') { - $r->print(''); + $r->print(''); foreach my $which (sort(keys(%{$bymap->{$url}{$rev}{$scope}}))) { $r->print(''); } elsif (ref($bymap->{$url}{$rev}{$scope}) eq 'ARRAY') { - $r->print(''); } @@ -2793,14 +2769,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(); } @@ -3250,11 +3230,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'}).''.
'.&mt('Setting - scope: [_1]',$lt->{$scope}).'
'.&mt('Setting - scope: [_1]',$scope).''.$which.''. join('
',@{$bymap->{$url}{$rev}{$scope}{$which}}). @@ -2504,7 +2480,7 @@ sub releases_by_map { } $r->print('
'.&mt('Setting - scope: [_1]',$lt->{$scope}). + $r->print('
'.&mt('Setting - scope: [_1]',$scope). ' '. join('
',@{$bymap->{$url}{$rev}{$scope}}).'