--- loncom/interface/lonparmset.pm 2005/08/27 00:03:32 1.242 +++ loncom/interface/lonparmset.pm 2005/09/02 22:14:35 1.247 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set parameters for assessments # -# $Id: lonparmset.pm,v 1.242 2005/08/27 00:03:32 banghart Exp $ +# $Id: lonparmset.pm,v 1.247 2005/09/02 22:14:35 albertel 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); @@ -2191,18 +2191,20 @@ sub listdata { my $foundkeys=0; 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\.(.+)$/); } - ($arealm cmp $brealm) || ($astudent cmp $bstudent); + if (!defined($bstudent)) { + ($brealm)=($b=~/^\Q$env{'request.course.id'}\E\.(.+)$/); + } + ($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'}) { @@ -2728,8 +2730,11 @@ ENDMAINFORMHEAD sub setinstmeta { my ($r)=@_; my $next_meta; - if ($env{'form.nextmeta'}) { - $next_meta = $env{'form.nextmeta'}; + my $output; + my $item_num; + my $put_result; + if ($env{'form.serial'}) { + $next_meta = $env{'form.serial'}; } else { $next_meta = 1; } @@ -2742,37 +2747,75 @@ sub setinstmeta { 'Set Instructor Metadata')); my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'}; my $crs = $env{'course.'.$env{'request.course.id'}.'.num'}; - 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'); - } else { - foreach my $key (sort keys %env) { - my $found_one = 0; - if ($key=~m/^course\.$env{'request.course.id'}\.metadata\.title/) { - unless ($found_one) { - $found_one = 1; - $r->print('Existing Metadata
'); - } - $r->print($env{$key}.'
'); - $key=~~m/^course\.$env{'request.course.id'}\.metadata\.title\.(d*)\./; - if ($1 ge $next_meta) { - $next_meta = $1 ++; - } - } + 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 $item_num = $1; + my $name = 'metadata.'.$item_num.'.type'; + my $value = $env{'form.type'.$item_num}; + $put_result = &Apache::lonnet::put('environment', + {$name=>$value},$dom,$crs); + $name = 'metadata.'.$item_num.'.values'; + $value = $env{'form.values'.$item_num}; + $put_result = &Apache::lonnet::put('environment', + {$name=>$value},$dom,$crs); } - $r->print('Add Metadata Item
'); - } + if ($field=~m/newfield/) { + my $item_num = $env{'form.serial'}; + my $name = 'metadata.'.$item_num.'.type'; + my $value = $env{'form.typenew'}; + $put_result = &Apache::lonnet::put('environment', + {$name=>$value},$dom,$crs); + $name = 'metadata.'.$item_num.'.values'; + $value = $env{'form.valuesnew'}; + $put_result = &Apache::lonnet::put('environment', + {$name=>$value},$dom,$crs); + $name = 'metadata.'.$item_num.'.title'; + $value = $env{'form.titlenew'}; + $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\.\d+\.title$/) { + $key=~m/(^course\.$env{'request.course.id'}\.metadata\.)(\d+)\.title/; + $key_base = $1; + $item_num = $2; + if ($item_num ge $next_meta) { + $next_meta = $item_num + 1; + } + $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.=''; + $output.=''; + $r->print(< + +

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