--- loncom/interface/lonparmset.pm 2005/08/30 00:40:12 1.245 +++ loncom/interface/lonparmset.pm 2005/09/29 21:10:32 1.254 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set parameters for assessments # -# $Id: lonparmset.pm,v 1.245 2005/08/30 00:40:12 banghart Exp $ +# $Id: lonparmset.pm,v 1.254 2005/09/29 21:10:32 banghart Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1921,6 +1921,9 @@ sub crsenv { 'disablesigfigs' => ''.&mt('Disable checking of Significant Figures').'
'. ' ('.&mt('"[_1]" to disable, anything else if not','yes').')', + 'disableexampointprint' + => ''.&mt('Disable automatically printing point values onto exams.').'
'. + ' ('.&mt('"[_1]" to disable, anything else if not','yes').')', 'tthoptions' => ''.&mt('Default set of options to pass to tth/m when converting tex').'' ); @@ -1947,7 +1950,8 @@ sub crsenv { 'default_enrollment_start_date', 'default_enrollment_end_date', 'tthoptions', - 'disablesigfigs' + 'disablesigfigs', + 'disableexampointprint' ); foreach my $parameter (sort(keys(%values))) { unless (($parameter =~ m/^internal\./)||($parameter =~ m/^metadata\./)) { @@ -2189,20 +2193,41 @@ sub listdata { my $pointer=0; $tableopen=0; my $foundkeys=0; + my %keyorder=&standardkeyorder(); foreach my $thiskey (sort { if ($sortorder eq 'realmstudent') { - my ($astudent,$arealm)=($a=~/^$env{'request.course.id'}\.([^\.]+)\.(.+)\.[^\.]+$/); - my ($bstudent,$brealm)=($b=~/^$env{'request.course.id'}\.([^\.]+)\.(.+)\.[^\.]+$/); - if (!defined($astudent) && !defined($bstudent) && - !defined($arealm) && !defined($brealm)) { - ($arealm)=($a=~/^$env{'request.course.id'}\.(.+)\.[^\.]+$/); - ($brealm)=($b=~/^$env{'request.course.id'}\.(.+)\.[^\.]+$/); + my ($astudent,$arealm)=($a=~/^\Q$env{'request.course.id'}\E\.\[([^\.]+)\]\.(.+)\.[^\.]+$/); + my ($bstudent,$brealm)=($b=~/^\Q$env{'request.course.id'}\E\.\[([^\.]+)\]\.(.+)\.[^\.]+$/); + if (!defined($astudent)) { + ($arealm)=($a=~/^\Q$env{'request.course.id'}\E\.(.+)$/); + } + if (!defined($bstudent)) { + ($brealm)=($b=~/^\Q$env{'request.course.id'}\E\.(.+)$/); + } + $arealm=~s/\.type//; + my ($ares, $aparm) = ($arealm=~/^(.*)\.(.*)$/); + $aparm=$keyorder{'parameter_0_'.$aparm}; + $brealm=~s/\.type//; + my ($bres, $bparm) = ($brealm=~/^(.*)\.(.*)$/); + $bparm=$keyorder{'parameter_0_'.$bparm}; + if ($ares eq $bres) { + if (defined($aparm) && defined($bparm)) { + ($aparm <=> $bparm); + } elsif (defined($aparm)) { + -1; + } elsif (defined($bparm)) { + 1; + } else { + ($arealm cmp $brealm) || ($astudent cmp $bstudent); + } + } else { + ($arealm cmp $brealm) || ($astudent cmp $bstudent); } - ($arealm cmp $brealm) || ($astudent cmp $bstudent); } else { $a cmp $b; } } keys %{$listdata}) { + if ($$listdata{$thiskey.'.type'}) { my $thistype=$$listdata{$thiskey.'.type'}; if ($$resourcedata{$thiskey.'.type'}) { @@ -2725,16 +2750,40 @@ ENDMAINFORMHEAD return; } ### Set instructor defined metadata +sub output_row { + my ($r, $field_name) = @_; + my $output; + my $options=$env{'course.'.$env{'request.course.id'}.'.metadata.'.$field_name.'.options'}; + my $values=$env{'course.'.$env{'request.course.id'}.'.metadata.'.$field_name.'.values'}; + my $checked; + unless (defined($options)) { + $options = 'active,stuadd'; + $values = 'Type a list of values separated by commas.'; + } + $output.=''.$field_name.''; + $output.=''; + if ($options =~ m/onlyone/) { + $checked = ' CHECKED '; + } else { + $checked = ' '; + } + $output.='
'; + if ($options =~ m/stuadd/) { + $checked = ' CHECKED '; + } else { + $checked = ' '; + } + $output.=''; + + $output.=''; + return ($output); +} sub setinstmeta { my ($r)=@_; my $next_meta; my $output; my $item_num; - if ($env{'form.serial'}) { - $next_meta = $env{'form.serial'}; - } else { - $next_meta = 1; - } + my $put_result; $r->print(&Apache::lonxml::xmlbegin()); $r->print(' LON-CAPA Set Instructor Metadata @@ -2745,66 +2794,44 @@ sub setinstmeta { my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'}; my $crs = $env{'course.'.$env{'request.course.id'}.'.num'}; my $key_base = $env{'course.'.$env{'request.course.id'}.'.metadata.'}; - if ($env{'form.state'}eq 'add') { - $r->print('Compose a new metadata item:
'); - $r->print('
'); - $r->print ('Title of item: '.&Apache::lonhtmlcommon::textbox("title",undef,undef,undef).'
'); - $r->print ('List if items (comma separated): '.&Apache::lonhtmlcommon::textbox("values",undef,undef,undef).'
'); - $r->print ('Select one:
'); - $r->print ('Select many:
'); - $r->print(''); - $r->print(''); - $r->print(''); - $r->print(''); - $r->print('
'); - } elsif ($env{'form.state'}eq 'save') { - $r->print('Here we save the metadata'); - $key_base.=$env{'form.serial'}.'.'; - $r->print('The title: '.$env{'form.title'}.'
'); - $r->print('The values: '.$env{'form.values'}.'
'); - $r->print('The type: '.$env{'form.type'}.'
'); - $r->print('The number: '.$env{'form.serial'}.'
'); - my $name = 'metadata.'.$env{'form.serial'}.'.title'; - my $value = $env{'form.title'}; - my $put_result = &Apache::lonnet::put('environment', - {$name=>$value},$dom,$crs); - $r->print('the put result was: '.$put_result.'
'); - $name = 'metadata.'.$env{'form.serial'}.'.type'; - $value = $env{'form.type'}; - $put_result = &Apache::lonnet::put('environment', - {$name=>$value},$dom,$crs); - $name = 'metadata.'.$env{'form.serial'}.'.values'; - $value = $env{'form.values'}; - $put_result = &Apache::lonnet::put('environment', - {$name=>$value},$dom,$crs); - &Apache::lonnet::coursedescription($env{'request.course.id'}); - } else { - - foreach my $key (sort keys %env) { - if ($key=~m/^course\.$env{'request.course.id'}\.metadata\.\d+\.title$/) { - $key=~m/^course\.$env{'request.course.id'}\.metadata\.(\d+)\.title/; - $item_num = $1; - if ($1 ge $next_meta) { - $next_meta = $1 + 1; + my $save_field = ''; + if ($env{'form.instmeta'}) { + foreach my $field (sort(keys(%env))) { + if ($field=~m/^form.(.+)_(.+)$/) { + my $options; + my $meta_field = $1; + my $meta_key = $2; + if ($save_field ne $meta_field) { + $save_field = $meta_field; + if ($env{'form.'.$meta_field.'_stuadd'}) { + $options.='stuadd,'; + } + if ($env{'form.'.$meta_field.'_onlyone'}) { + $options.='onlyone,'; + } + if ($env{'form.'.$meta_field.'_active'}) { + $options.='active,'; + } + my $name = 'metadata.'.$save_field; + $put_result = &Apache::lonnet::put('environment', + {'metadata.'.$meta_field.'.options'=>$options, + 'metadata.'.$meta_field.'.values'=>$env{'form.'.$meta_field.'_values'}, + },$dom,$crs); } - $output.=''.$env{$key}.''; - $output.='Select one:
'; - $output.='Select many: '; - $output.=''; } } - $output.='Create new instructor metadata item
'; - $output.=''; - $output.='Select one:
'; - $output.='Select many: '; - $output.=''; - $output.=''; + + } + &Apache::lonnet::coursedescription($env{'request.course.id'}); + $output.= &output_row($r, "Title"); + $output.= &output_row($r, "Subject"); + $output.= &output_row($r, "Keywords"); $r->print(<

- + $output
TitleOptionsChoices
Metadata ItemValuesOnly One ChoiceStudent Can Add Choices
@@ -2812,7 +2839,7 @@ sub setinstmeta { ENDenv - } + $r->print(' '); return 'ok';