--- loncom/interface/lonparmset.pm 2005/08/26 18:57:42 1.240 +++ loncom/interface/lonparmset.pm 2005/09/14 17:56:25 1.250 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set parameters for assessments # -# $Id: lonparmset.pm,v 1.240 2005/08/26 18:57:42 banghart Exp $ +# $Id: lonparmset.pm,v 1.250 2005/09/14 17:56:25 banghart Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1950,7 +1950,7 @@ sub crsenv { 'disablesigfigs' ); foreach my $parameter (sort(keys(%values))) { - unless ($parameter =~ m/^internal\./) { + unless (($parameter =~ m/^internal\./)||($parameter =~ m/^metadata\./)) { if (! $descriptions{$parameter}) { $descriptions{$parameter}=$parameter; push(@Display_Order,$parameter); @@ -2189,20 +2189,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'}) { @@ -2727,18 +2748,75 @@ ENDMAINFORMHEAD ### Set instructor defined metadata sub setinstmeta { my ($r)=@_; - my $setoutput=''; + my $next_meta; + my $output; + my $item_num; + my $put_result; $r->print(&Apache::lonxml::xmlbegin()); $r->print(' LON-CAPA Set Instructor Metadata '); - $r->print(&Apache::loncommon::bodytag('Set Instructor Metadata')); $r->print(&Apache::lonhtmlcommon::breadcrumbs(undef, 'Set Instructor Metadata')); my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'}; my $crs = $env{'course.'.$env{'request.course.id'}.'.num'}; - $r->print('Set instructor metadata here'); + my $key_base = $env{'course.'.$env{'request.course.id'}.'.metadata.'}; + foreach my $field (%env) { + # start by looking for populated fields + if ($field=~m/type(\d+)/) { + my $name; + my $value; + $put_result = &Apache::lonnet::put('environment', + {$name=>$value},$dom,$crs); + $put_result = &Apache::lonnet::put('environment', + {$name=>$value},$dom,$crs); + } + if ($field=~m/newfield/) { + my $name = 'metadata.'.$env{'form.titlenew'}; + my %meta_hash = {values=>[$env{'form.valuesnew'}], + allow_pick=>'many', + allow_type=>'no'}; + + my $value = \%meta_hash; + $put_result = &Apache::lonnet::put('environment', + {$name=>$value},$dom,$crs); + } + } + &Apache::lonnet::coursedescription($env{'request.course.id'}); + foreach my $key (sort keys %env) { + if ($key=~m/^course\.$env{'request.course.id'}\.metadata\.(.+)$/) { + my $meta_data_item = $1; + my $meta_hash=$env{$key}; + $output.=''.$meta_data_item.''; + $output.='Select one:
'; + $output.='Select many: '; + $output.=''; + } + } + $output.='Create new instructor metadata item
'; + $output.=''; + $output.='students must pick only one:
'; + $output.='Allow student to type extra info: '; + $output.=''; + $output.=''; + $output.=''; + $r->print(< + +

+ + + $output +
TitleOptionsChoices
+ + + +ENDenv + + + $r->print(' + '); return 'ok'; } ################################################## @@ -2926,7 +3004,7 @@ sub handler { 'pres_marker', 'pres_value', 'pres_type', - 'udom','uname','symb']); + 'udom','uname','symb','serial']); &Apache::lonhtmlcommon::clear_breadcrumbs();