--- loncom/interface/lonparmset.pm 2009/07/01 14:35:47 1.465 +++ loncom/interface/lonparmset.pm 2009/09/03 16:05:20 1.470 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set parameters for assessments # -# $Id: lonparmset.pm,v 1.465 2009/07/01 14:35:47 amueller Exp $ +# $Id: lonparmset.pm,v 1.470 2009/09/03 16:05:20 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1185,7 +1185,7 @@ sub extractResourceInformation { $parmdis = $display; $parmdis =~ s/\s*\[Part.*$//g; } else { - $parmdis = $display; + $parmdis = &mt($display); } $$allparms{$name}=$parmdis; if (ref($defkeytype)) { @@ -1244,6 +1244,10 @@ sub isdateparm { return (($type=~/^date/) && (!($type eq 'date_interval'))); } +# +# This function prints a list of parameters, which were selected. It also display a link from which you can +# hide or show the complete parameter list, from which you can choose your parameters. +# sub parmmenu { my ($r,$allparms,$pscat,$keyorder)=@_; my $tempkey; @@ -1330,7 +1334,6 @@ sub parmmenu { function checkboxChecked(id) { var li = "_li"; var id_li = id.concat(li); - if (document.getElementById(id_li).style.display == "none") { document.getElementById(id_li).style.display = ""; } @@ -1457,12 +1460,28 @@ sub keysindisplayorderCategory { } ( @{$name}); } +sub category_order { + return ( + 'time_settings' => 1, + 'grading' => 2, + 'tries' => 3, + 'problem_appearance' => 4, + 'hiding' => 5, + 'behaviour_of_input_fields' => 6, + 'high_level_randomization' => 7, + 'slots' => 8, + 'file_submission' => 9, + 'misc' => 10 + ); + +} sub parmboxes { my ($r,$allparms,$pscat,$keyorder)=@_; my $tempkey; my $tempparameter; my %categories = &categories; + my %category_order = &category_order(); my %categoryList = ( 'time_settings' => [], 'grading' => [], @@ -1475,27 +1494,26 @@ sub parmboxes { 'file_submission' => [], 'misc' => [], ); - foreach $tempparameter (keys %$allparms) { &whatIsMyCategory($tempparameter, \%categoryList); } #part to print the parm-list $r->print(''); } +# +# This function offers some links on the parameter section to get with one click a group a parameters +# sub shortCuts { my ($r,$allparms,$pscat,$keyorder)=@_; @@ -1682,6 +1702,9 @@ function group_or_section(caller) { ,$chooseopt)); } +# +# This function shows on table Mode the available Parameters for the selected Resources +# sub displaymenu { my ($r,$allparms,$allparts,$pscat,$psprt,$keyorder)=@_; $r->print(&Apache::lonhtmlcommon::topic_bar (2,&mt('Select Parameters'))); @@ -1697,7 +1720,8 @@ sub displaymenu { } sub mapmenu { - my ($r,$allmaps,$pschp,$maptitles)=@_; + my ($r,$allmaps,$pschp,$maptitles, $symbp)=@_; + my %allmaps_inverted = reverse %$allmaps; my $navmap = Apache::lonnavmaps::navmap->new(); my $tree=[]; my $treeinfo={}; @@ -1705,34 +1729,45 @@ sub mapmenu { my $it=$navmap->getIterator(undef,undef,undef,1,undef,undef); my $curRes; my $depth = 0; - + my %parent = (); + my $startcount = 5; + my $lastcontainer = $startcount; +# preparing what is to show ... while ($curRes = $it->next()) { if ($curRes == $it->BEGIN_MAP()) { $depth++; + $parent{$depth}= $lastcontainer; } if ($curRes == $it->END_MAP()) { $depth--; + $lastcontainer = $parent{$depth}; } if (ref($curRes)) { + my $symb = $curRes->symb(); + my $ressymb = $symb; if (($curRes->is_sequence()) || ($curRes->is_page())) { my $type = 'sequence'; if ($curRes->is_page()) { $type = 'page'; } my $id= $curRes->id(); - my ($mapid,$resid)=split(/\./,$id); - if(!exists($treeinfo->{$mapid})) { - push(@$tree,$mapid); - $treeinfo->{$mapid} = { + my $srcf = $curRes->src(); + my $resource_name = &Apache::lonnet::gettitle($srcf); + if(!exists($treeinfo->{$id})) { + push(@$tree,$id); + my $enclosing_map_folder = &Apache::lonnet::declutter($curRes->enclosing_map_src()); + $treeinfo->{$id} = { depth => $depth, type => $type, + name => $resource_name, + enclosing_map_folder => $enclosing_map_folder, }; } } } } } - +# Show it ... $r->print(&Apache::lonhtmlcommon::row_title(&mt('Select Enclosing Map or Folder'))); if ((ref($tree) eq 'ARRAY') && (ref($treeinfo) eq 'HASH')) { my $icon = ''; @@ -1748,27 +1783,48 @@ sub mapmenu { my $whitespace = ''; - foreach my $mapid (@{$tree}) { + if (exists($$allmaps{1})) { + $r->print(&Apache::loncommon::start_data_table_row() + .''.$icon + .'' + .'' + .&Apache::loncommon::end_data_table_row() + ); + } + foreach my $id (@{$tree}) { + my ($mapid,$resid)=split(/\./,$id); # Indentation - my $depth = $treeinfo->{$mapid}->{'depth'}; + my $depth = $treeinfo->{$id}->{'depth'}; my $indent; for (my $i = 0; $i < $depth; $i++) { $indent.= $whitespace; } $icon = ''; - if ($treeinfo->{$mapid}->{'type'} eq 'page') { + if ($treeinfo->{$id}->{'type'} eq 'page') { $icon = ''; } + my $symb_name = $$symbp{$id}; + my ($front, $tail) = split (/___${resid}___/, $symb_name); + $symb_name = $tail; $r->print(&Apache::loncommon::start_data_table_row() .''.$indent.$icon .'' .'' @@ -1956,6 +2012,7 @@ sub assessparms { } else { $udom=$r->dir_config('lonDefDomain'); } + my @pscat=&Apache::loncommon::get_env_multiple('form.pscat'); my $pschp=$env{'form.pschp'}; @@ -2137,7 +2194,7 @@ ENDPARMSELSCRIPT $r->print('
'); } - # Display parameter selection boxes + # Display Unit 1 "General Parameters" if (!$pssymb) { $r->print(&Apache::lonhtmlcommon::topic_bar (1,&mt('General Parameters'))); $r->print(&Apache::lonhtmlcommon::start_pick_box()); @@ -2146,12 +2203,12 @@ ENDPARMSELSCRIPT if ($parmlev ne 'general') { $r->print(&Apache::lonhtmlcommon::row_closure()); - &mapmenu($r,\%allmaps,$pschp,\%maptitles); + &mapmenu($r,\%allmaps,$pschp,\%maptitles, \%symbp); } $r->print(&Apache::lonhtmlcommon::row_closure(1)); $r->print(&Apache::lonhtmlcommon::end_pick_box()); - + #Display Unit 2 "Select Parameter" &displaymenu($r,\%allparms,\%allparts,\@pscat,\@psprt,\%keyorder); } else { my ($map,$id,$resource)=&Apache::lonnet::decode_symb($pssymb); @@ -2881,9 +2938,10 @@ sub listdata { # # Ready to print # + my $parmitem = &standard_parameter_names($name); $r->print(&tablestart(). &Apache::loncommon::start_data_table_row(). - ''.&standard_parameter_names($name). + ''.&mt($parmitem). ''); $foundkeys++; @@ -3297,9 +3355,10 @@ ENDOVER $display_value = &Apache::lonlocal::locallocaltime($display_value); } + my $parmitem = &standard_parameter_names($data{'parameter_name'}); + $parmitem = &mt($parmitem); $r->print(&mt('Parameter: "[_1]" with value: "[_2]"', - &standard_parameter_names($data{'parameter_name'}), - $resourcedata->{$thiskey})); + $parmitem,$resourcedata->{$thiskey})); $r->print('
'); if ($data{'scope_type'} eq 'all') { $r->print(&mt('All users')); @@ -4161,7 +4220,7 @@ sub components { } my %standard_parms; - +my %standard_parms_types; sub load_parameter_names { open(my $config,"<$Apache::lonnet::perlvar{'lonTabDir'}/packages.tab"); @@ -4172,12 +4231,13 @@ sub load_parameter_names { my (undef,$name,$type)=split(/\&/,$short,3); if ($type eq 'display') { $standard_parms{$name} = $plain; - } + } elsif ($type eq 'type') { + $standard_parms_types{$name} = $plain; + } } close($config); $standard_parms{'int_pos'} = 'Positive Integer'; $standard_parms{'int_zero_pos'} = 'Positive Integer or Zero'; - %standard_parms=&Apache::lonlocal::texthash(%standard_parms); } sub standard_parameter_names { @@ -4192,7 +4252,16 @@ sub standard_parameter_names { } } - +sub standard_parameter_types { + my ($name)=@_; + if (!%standard_parms_types) { + &load_parameter_names(); + } + if ($standard_parms_types{$name}) { + return $standard_parms_types{$name}; + } + return; +} sub parm_change_log { my ($r)=@_; @@ -4290,23 +4359,37 @@ sub parm_change_log { } else { $makenewrow=1; } + my $parmitem = &standard_parameter_names($parmname); $output .=''.$realm.''.$section.''. - &standard_parameter_names($parmname).''. + &mt($parmitem).''. ($part?&mt('Part: [_1]',$part):&mt('All Parts')).''; my $stillactive=0; if ($parmlog{$id}{'delflag'}) { $output .= &mt('Deleted'); } else { if ($typeflag) { - $output .= &mt('Type: [_1]',&standard_parameter_names($value)); + my $parmitem = &standard_parameter_names($value); + $parmitem = &mt($parmitem); + $output .= &mt('Type: [_1]',$parmitem); } else { my ($level,@all)=&parmval_by_symb($what,$middle,&Apache::lonnet::metadata($middle,$what), $uname,$udom,$issection,$issection,$courseopt); - if (&isdateparm($istype{$parmname})) { - $output .= &Apache::lonlocal::locallocaltime($value); - } else { - $output .= $value; - } + my $showvalue = $value; + if ($istype{$parmname} eq '') { + my $type = &standard_parameter_types($parmname); + if ($type ne '') { + if (&isdateparm($type)) { + $showvalue = + &Apache::lonlocal::locallocaltime($value); + } + } + } else { + if (&isdateparm($istype{$parmname})) { + $showvalue = + &Apache::lonlocal::locallocaltime($value); + } + } + $output .= $showvalue; if ($value ne $all[$level]) { $output .= '
'.&mt('Not active anymore').''; } else { @@ -4315,8 +4398,11 @@ sub parm_change_log { } } $output .= ''; + if ($stillactive) { - my $title=&mt('Changed [_1]',&standard_parameter_names($parmname)); + my $parmitem = &standard_parameter_names($parmname); + $parmitem = &mt($parmitem); + my $title=&mt('Changed [_1]',$parmitem); my $description=&mt('Changed [_1] for [_2] to [_3]',&standard_parameter_names($parmname),$realmdescription, (&isdateparm($istype{$parmname})?&Apache::lonlocal::locallocaltime($value):$value)); if (($uname) && ($udom)) {