Diff for /loncom/interface/lonparmset.pm between versions 1.465 and 1.470

version 1.465, 2009/07/01 14:35:47 version 1.470, 2009/09/03 16:05:20
Line 1185  sub extractResourceInformation { Line 1185  sub extractResourceInformation {
     $parmdis = $display;      $parmdis = $display;
     $parmdis =~ s/\s*\[Part.*$//g;      $parmdis =~ s/\s*\[Part.*$//g;
  } else {   } else {
     $parmdis = $display;      $parmdis = &mt($display);
  }   }
  $$allparms{$name}=$parmdis;   $$allparms{$name}=$parmdis;
  if (ref($defkeytype)) {   if (ref($defkeytype)) {
Line 1244  sub isdateparm { Line 1244  sub isdateparm {
     return (($type=~/^date/) && (!($type eq 'date_interval')));      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 {  sub parmmenu {
     my ($r,$allparms,$pscat,$keyorder)=@_;      my ($r,$allparms,$pscat,$keyorder)=@_;
     my $tempkey;      my $tempkey;
Line 1330  sub parmmenu { Line 1334  sub parmmenu {
     function checkboxChecked(id) {      function checkboxChecked(id) {
         var li = "_li";          var li = "_li";
         var id_li = id.concat(li);          var id_li = id.concat(li);
   
         if (document.getElementById(id_li).style.display == "none") {          if (document.getElementById(id_li).style.display == "none") {
             document.getElementById(id_li).style.display = "";              document.getElementById(id_li).style.display = "";
         }          }
Line 1457  sub keysindisplayorderCategory { Line 1460  sub keysindisplayorderCategory {
     } ( @{$name});      } ( @{$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 {  sub parmboxes {
     my ($r,$allparms,$pscat,$keyorder)=@_;      my ($r,$allparms,$pscat,$keyorder)=@_;
     my $tempkey;      my $tempkey;
     my $tempparameter;      my $tempparameter;
     my %categories = &categories;      my %categories = &categories;
       my %category_order = &category_order();
     my %categoryList = (      my %categoryList = (
         'time_settings' => [],          'time_settings' => [],
         'grading' => [],          'grading' => [],
Line 1475  sub parmboxes { Line 1494  sub parmboxes {
         'file_submission' => [],          'file_submission' => [],
         'misc' => [],          'misc' => [],
    );     );
   
     foreach $tempparameter (keys %$allparms) {      foreach $tempparameter (keys %$allparms) {
         &whatIsMyCategory($tempparameter, \%categoryList);          &whatIsMyCategory($tempparameter, \%categoryList);
     }      }
     #part to print the parm-list      #part to print the parm-list
     $r->print('<fieldset id="LC_parm_overview_parm_menu" style="display:none">'      $r->print('<fieldset id="LC_parm_overview_parm_menu" style="display:none">'
              .'<legend>'.&mt('Parameter').'</legend>'               .'<legend>'.&mt('Parameter').'</legend>'."\n"
              ."\n"  
              .'<table>'  
     );      );
   
     #Print parameters      #Print parameters
     my ($category, $list) = undef;      for my $key (sort { $category_order{$a} <=> $category_order{$b} } keys %categoryList) {
     while (($category, $list) = each %categoryList) {          if(@{$categoryList{$key}} == 0) {
         if(@$list == 0) {  
             next;              next;
         } else {           } else { 
             $r->print('<tr>');              $r->print('<fieldset>'
             $r->print('<td><b>' .&mt($categories{$category}).'</b></td> </tr> <tr>');                       .'<legend>'
             foreach $tempkey (&keysindisplayorderCategory($list,$keyorder)) {                       .&mt($categories{$key})
             $r->print("\n".'<td><label><input type="checkbox" name="pscat" ');                       .'</legend>'."\n");
               foreach $tempkey (&keysindisplayorderCategory($categoryList{$key},$keyorder)) {
                       $r->print('<span class="LC_nobreak">'
                                .'<label><input type="checkbox" name="pscat" ');
             $r->print('value="'.$tempkey.'" ');              $r->print('value="'.$tempkey.'" ');
                 $r->print('onclick="checkboxChecked(\''.$tempkey.'\')"');                  $r->print('onclick="checkboxChecked(\''.$tempkey.'\')"');
             if ($$pscat[0] eq "all" || grep $_ eq $tempkey, @{$pscat}) {              if ($$pscat[0] eq "all" || grep $_ eq $tempkey, @{$pscat}) {
Line 1503  sub parmboxes { Line 1521  sub parmboxes {
             }              }
                 $r->print(' />'.($$allparms{$tempkey}=~/\S/ ? $$allparms{$tempkey}                  $r->print(' />'.($$allparms{$tempkey}=~/\S/ ? $$allparms{$tempkey}
                                                       : $tempkey)                                                        : $tempkey)
                         .'</label></td>');                          .'</label></span> ');
             }              }
             $r->print('</tr>');              $r->print('</fieldset>');
         }          }
     }      }
     $r->print( '</table>'      $r->print('<hr />'
                .'<hr />'               .'<a href="javascript:hideParms()">'
                .'<a href="javascript:hideParms()">'               .&mt('Hide')
                .&mt('Hide')               .'</a>'
                .'</a>'  
     );      );
   
     #&shortCuts($r,$allparms,$pscat,$keyorder);      #&shortCuts($r,$allparms,$pscat,$keyorder);
     $r->print('</fieldset>');      $r->print('</fieldset>');
 }  }
   #
   # This function offers some links on the parameter section to get with one click a group a parameters
   #
 sub shortCuts {  sub shortCuts {
     my ($r,$allparms,$pscat,$keyorder)=@_;      my ($r,$allparms,$pscat,$keyorder)=@_;
   
Line 1682  function group_or_section(caller) { Line 1702  function group_or_section(caller) {
                  ,$chooseopt));                   ,$chooseopt));
 }  }
   
   #
   # This function shows on table Mode the available Parameters for the selected Resources
   #
 sub displaymenu {  sub displaymenu {
     my ($r,$allparms,$allparts,$pscat,$psprt,$keyorder)=@_;      my ($r,$allparms,$allparts,$pscat,$psprt,$keyorder)=@_;
     $r->print(&Apache::lonhtmlcommon::topic_bar (2,&mt('Select Parameters')));      $r->print(&Apache::lonhtmlcommon::topic_bar (2,&mt('Select Parameters')));
Line 1697  sub displaymenu { Line 1720  sub displaymenu {
 }  }
   
 sub mapmenu {  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 $navmap = Apache::lonnavmaps::navmap->new();
     my $tree=[];      my $tree=[];
     my $treeinfo={};      my $treeinfo={};
Line 1705  sub mapmenu { Line 1729  sub mapmenu {
         my $it=$navmap->getIterator(undef,undef,undef,1,undef,undef);          my $it=$navmap->getIterator(undef,undef,undef,1,undef,undef);
         my $curRes;          my $curRes;
         my $depth = 0;          my $depth = 0;
           my %parent = ();
           my $startcount = 5;
           my $lastcontainer = $startcount;
   # preparing what is to show ...
         while ($curRes = $it->next()) {          while ($curRes = $it->next()) {
             if ($curRes == $it->BEGIN_MAP()) {              if ($curRes == $it->BEGIN_MAP()) {
                 $depth++;                  $depth++;
                   $parent{$depth}= $lastcontainer;
             }              }
             if ($curRes == $it->END_MAP()) {              if ($curRes == $it->END_MAP()) {
                 $depth--;                  $depth--;
                   $lastcontainer = $parent{$depth};
             }              }
             if (ref($curRes)) {              if (ref($curRes)) {
                   my $symb = $curRes->symb();
                   my $ressymb = $symb;
                 if (($curRes->is_sequence()) || ($curRes->is_page())) {                  if (($curRes->is_sequence()) || ($curRes->is_page())) {
                     my $type = 'sequence';                      my $type = 'sequence';
                     if ($curRes->is_page()) {                      if ($curRes->is_page()) {
                         $type = 'page';                          $type = 'page';
                     }                      }
                     my $id= $curRes->id();                      my $id= $curRes->id();
                     my ($mapid,$resid)=split(/\./,$id);                      my $srcf = $curRes->src();
                     if(!exists($treeinfo->{$mapid})) {                      my $resource_name = &Apache::lonnet::gettitle($srcf);
                         push(@$tree,$mapid);                          if(!exists($treeinfo->{$id})) {
                         $treeinfo->{$mapid} = {                          push(@$tree,$id);
                           my $enclosing_map_folder = &Apache::lonnet::declutter($curRes->enclosing_map_src());    
                           $treeinfo->{$id} = {
                                     depth => $depth,                                      depth => $depth,
                                     type  => $type,                                      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')));      $r->print(&Apache::lonhtmlcommon::row_title(&mt('Select Enclosing Map or Folder')));
     if ((ref($tree) eq 'ARRAY') && (ref($treeinfo) eq 'HASH')) {      if ((ref($tree) eq 'ARRAY') && (ref($treeinfo) eq 'HASH')) {
         my $icon = '<img src="/adm/lonIcons/navmap.folder.open.gif" alt="" />';          my $icon = '<img src="/adm/lonIcons/navmap.folder.open.gif" alt="" />';
Line 1748  sub mapmenu { Line 1783  sub mapmenu {
         my $whitespace = '<img src="'          my $whitespace = '<img src="'
                         .&Apache::loncommon::lonhttpdurl("/adm/lonIcons/whitespace_21.gif")                          .&Apache::loncommon::lonhttpdurl("/adm/lonIcons/whitespace_21.gif")
                         .'" alt="" />';                          .'" alt="" />';
         foreach my $mapid (@{$tree}) {          if (exists($$allmaps{1})) {
               $r->print(&Apache::loncommon::start_data_table_row()
                   .'<td>'.$icon
                   .'<label>&nbsp;'
                   .'<input type="radio" name="pschp" value="1"'
               );
               if ($pschp eq 1) {
                   $r->print(' checked="checked"');
               }
               $r->print('/>'
                   .$$maptitles{1}
                   .($$allmaps{1} !~/^uploaded/?' ['.$$allmaps{1}.']':'')
                   .'</label>'
                   .'</td>'
                   .&Apache::loncommon::end_data_table_row()
               );
           }
           foreach my $id (@{$tree}) {
               my ($mapid,$resid)=split(/\./,$id);
             # Indentation              # Indentation
             my $depth = $treeinfo->{$mapid}->{'depth'};              my $depth = $treeinfo->{$id}->{'depth'};
             my $indent;              my $indent;
             for (my $i = 0; $i < $depth; $i++) {              for (my $i = 0; $i < $depth; $i++) {
                 $indent.= $whitespace;                  $indent.= $whitespace;
             }              }
             $icon =  '<img src="/adm/lonIcons/navmap.folder.open.gif" alt="" />';              $icon =  '<img src="/adm/lonIcons/navmap.folder.open.gif" alt="" />';
             if ($treeinfo->{$mapid}->{'type'} eq 'page') {              if ($treeinfo->{$id}->{'type'} eq 'page') {
                 $icon = '<img src="/adm/lonIcons/navmap.page.open.gif" alt="" />';                  $icon = '<img src="/adm/lonIcons/navmap.page.open.gif" alt="" />';
             }              }
               my $symb_name = $$symbp{$id};
               my ($front, $tail) = split (/___${resid}___/, $symb_name);
               $symb_name = $tail;
             $r->print(&Apache::loncommon::start_data_table_row()              $r->print(&Apache::loncommon::start_data_table_row()
                      .'<td>'.$indent.$icon                       .'<td>'.$indent.$icon
                      .'<label>&nbsp;'                       .'<label>&nbsp;'
                      .'<input type ="radio" name="pschp" value="'.$mapid.'"'                       .'<input type ="radio" name="pschp" value="'.$allmaps_inverted{$symb_name}.'"'
             );              );
             if ($pschp eq $mapid) {              if ($pschp eq $allmaps_inverted{$symb_name}) {
                 $r->print(' checked="checked"');                  $r->print(' checked="checked"');
             }              }
             $r->print('/>'              $r->print('/>'
                      .$$maptitles{$mapid}                       .$treeinfo->{$id}->{name}
                      .($$allmaps{$mapid}!~/^uploaded/?' ['.$$allmaps{$mapid}.']':'')                       .($$allmaps{$mapid}!~/^uploaded/?' ['.$$allmaps{$mapid}.']':'')
                      .'</label>'                       .'</label>'
                      .'</td>'                       .'</td>'
Line 1956  sub assessparms { Line 2012  sub assessparms {
     } else {      } else {
  $udom=$r->dir_config('lonDefDomain');   $udom=$r->dir_config('lonDefDomain');
     }      }
       
   
     my @pscat=&Apache::loncommon::get_env_multiple('form.pscat');      my @pscat=&Apache::loncommon::get_env_multiple('form.pscat');
     my $pschp=$env{'form.pschp'};      my $pschp=$env{'form.pschp'};
Line 2137  ENDPARMSELSCRIPT Line 2194  ENDPARMSELSCRIPT
         $r->print('<div id="parmsel">');          $r->print('<div id="parmsel">');
     }      }
   
     # Display parameter selection boxes      # Display Unit 1 "General Parameters"
     if (!$pssymb) {      if (!$pssymb) {
         $r->print(&Apache::lonhtmlcommon::topic_bar (1,&mt('General Parameters')));          $r->print(&Apache::lonhtmlcommon::topic_bar (1,&mt('General Parameters')));
         $r->print(&Apache::lonhtmlcommon::start_pick_box());          $r->print(&Apache::lonhtmlcommon::start_pick_box());
Line 2146  ENDPARMSELSCRIPT Line 2203  ENDPARMSELSCRIPT
   
  if ($parmlev ne 'general') {   if ($parmlev ne 'general') {
             $r->print(&Apache::lonhtmlcommon::row_closure());              $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::row_closure(1));
         $r->print(&Apache::lonhtmlcommon::end_pick_box());          $r->print(&Apache::lonhtmlcommon::end_pick_box());
              #Display Unit 2 "Select Parameter"   
  &displaymenu($r,\%allparms,\%allparts,\@pscat,\@psprt,\%keyorder);   &displaymenu($r,\%allparms,\%allparts,\@pscat,\@psprt,\%keyorder);
     } else {      } else {
         my ($map,$id,$resource)=&Apache::lonnet::decode_symb($pssymb);          my ($map,$id,$resource)=&Apache::lonnet::decode_symb($pssymb);
Line 2881  sub listdata { Line 2938  sub listdata {
 #  #
 # Ready to print  # Ready to print
 #  #
               my $parmitem = &standard_parameter_names($name);
     $r->print(&tablestart().      $r->print(&tablestart().
       &Apache::loncommon::start_data_table_row().        &Apache::loncommon::start_data_table_row().
       '<td><b>'.&standard_parameter_names($name).        '<td><b>'.&mt($parmitem).
       '</b></td><td><input type="checkbox" name="del_'.        '</b></td><td><input type="checkbox" name="del_'.
       $thiskey.'" /></td><td>');        $thiskey.'" /></td><td>');
     $foundkeys++;      $foundkeys++;
Line 3297  ENDOVER Line 3355  ENDOVER
  $display_value =   $display_value =
     &Apache::lonlocal::locallocaltime($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]"',      $r->print(&mt('Parameter: "[_1]" with value: "[_2]"',
   &standard_parameter_names($data{'parameter_name'}),    $parmitem,$resourcedata->{$thiskey}));
   $resourcedata->{$thiskey}));  
     $r->print('<br />');      $r->print('<br />');
     if ($data{'scope_type'} eq 'all') {      if ($data{'scope_type'} eq 'all') {
  $r->print(&mt('All users'));   $r->print(&mt('All users'));
Line 4161  sub components { Line 4220  sub components {
 }  }
   
 my %standard_parms;  my %standard_parms;
   my %standard_parms_types;
   
 sub load_parameter_names {  sub load_parameter_names {
     open(my $config,"<$Apache::lonnet::perlvar{'lonTabDir'}/packages.tab");      open(my $config,"<$Apache::lonnet::perlvar{'lonTabDir'}/packages.tab");
Line 4172  sub load_parameter_names { Line 4231  sub load_parameter_names {
  my (undef,$name,$type)=split(/\&/,$short,3);   my (undef,$name,$type)=split(/\&/,$short,3);
  if ($type eq 'display') {   if ($type eq 'display') {
     $standard_parms{$name} = $plain;      $standard_parms{$name} = $plain;
  }          } elsif ($type eq 'type') {
               $standard_parms_types{$name} = $plain;
           }
     }      }
     close($config);      close($config);
     $standard_parms{'int_pos'}      = 'Positive Integer';      $standard_parms{'int_pos'}      = 'Positive Integer';
     $standard_parms{'int_zero_pos'} = 'Positive Integer or Zero';      $standard_parms{'int_zero_pos'} = 'Positive Integer or Zero';
     %standard_parms=&Apache::lonlocal::texthash(%standard_parms);  
 }  }
   
 sub standard_parameter_names {  sub standard_parameter_names {
Line 4192  sub standard_parameter_names { Line 4252  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 {  sub parm_change_log {
     my ($r)=@_;      my ($r)=@_;
Line 4290  sub parm_change_log { Line 4359  sub parm_change_log {
     } else {      } else {
  $makenewrow=1;   $makenewrow=1;
     }      }
               my $parmitem = &standard_parameter_names($parmname);
     $output .='<td>'.$realm.'</td><td>'.$section.'</td><td>'.      $output .='<td>'.$realm.'</td><td>'.$section.'</td><td>'.
       &standard_parameter_names($parmname).'</td><td>'.        &mt($parmitem).'</td><td>'.
       ($part?&mt('Part: [_1]',$part):&mt('All Parts')).'</td><td>';        ($part?&mt('Part: [_1]',$part):&mt('All Parts')).'</td><td>';
     my $stillactive=0;      my $stillactive=0;
     if ($parmlog{$id}{'delflag'}) {      if ($parmlog{$id}{'delflag'}) {
  $output .= &mt('Deleted');   $output .= &mt('Deleted');
     } else {      } else {
  if ($typeflag) {   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 {   } else {
     my ($level,@all)=&parmval_by_symb($what,$middle,&Apache::lonnet::metadata($middle,$what),      my ($level,@all)=&parmval_by_symb($what,$middle,&Apache::lonnet::metadata($middle,$what),
       $uname,$udom,$issection,$issection,$courseopt);        $uname,$udom,$issection,$issection,$courseopt);
     if (&isdateparm($istype{$parmname})) {                      my $showvalue = $value;
  $output .= &Apache::lonlocal::locallocaltime($value);                      if ($istype{$parmname} eq '') {
     } else {                          my $type = &standard_parameter_types($parmname);
  $output .= $value;                          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]) {      if ($value ne $all[$level]) {
  $output .= '<br /><span class="LC_warning">'.&mt('Not active anymore').'</span>';   $output .= '<br /><span class="LC_warning">'.&mt('Not active anymore').'</span>';
     } else {      } else {
Line 4315  sub parm_change_log { Line 4398  sub parm_change_log {
  }   }
     }      }
     $output .= '</td><td>';      $output .= '</td><td>';
               
     if ($stillactive) {      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,                  my $description=&mt('Changed [_1] for [_2] to [_3]',&standard_parameter_names($parmname),$realmdescription,
     (&isdateparm($istype{$parmname})?&Apache::lonlocal::locallocaltime($value):$value));      (&isdateparm($istype{$parmname})?&Apache::lonlocal::locallocaltime($value):$value));
  if (($uname) && ($udom)) {   if (($uname) && ($udom)) {

Removed from v.1.465  
changed lines
  Added in v.1.470


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>