Diff for /loncom/interface/lonparmset.pm between versions 1.210 and 1.212

version 1.210, 2005/06/05 17:24:04 version 1.212, 2005/06/06 15:13:46
Line 668  sub extractResourceInformation { Line 668  sub extractResourceInformation {
     my $maptitles=shift;      my $maptitles=shift;
     my $uris=shift;      my $uris=shift;
     my $keyorder=shift;      my $keyorder=shift;
       my $defkeytype=shift;
   
     my $keyordercnt=100;      my $keyordercnt=100;
   
Line 699  sub extractResourceInformation { Line 700  sub extractResourceInformation {
  my $parmdis = $display;   my $parmdis = $display;
  $parmdis =~ s/\[Part.*$//g;   $parmdis =~ s/\[Part.*$//g;
                 $$allparms{$name}=$parmdis;                  $$allparms{$name}=$parmdis;
    $$defkeytype{$name}=&Apache::lonnet::metadata($srcf,$key.'.type');
 #  #
 # allparts is a hash of all parts  # allparts is a hash of all parts
 #  #
Line 741  sub extractResourceInformation { Line 743  sub extractResourceInformation {
 ##################################################  ##################################################
   
 sub parmmenu {  sub parmmenu {
     my ($r,$allparms,$pscat)=@_;      my ($r,$allparms,$pscat,$keyorder)=@_;
     my $tempkey;      my $tempkey;
     $r->print(<<ENDSCRIPT);      $r->print(<<ENDSCRIPT);
 <script type="text/javascript">  <script type="text/javascript">
Line 798  ENDSCRIPT Line 800  ENDSCRIPT
     $r->print();      $r->print();
     $r->print("\n<table><tr>");      $r->print("\n<table><tr>");
     my $cnt=0;      my $cnt=0;
     foreach $tempkey (sort { $$allparms{$a} cmp $$allparms{$b} }      foreach $tempkey (&keysindisplayorder($allparms,$keyorder)) {
                       keys %{$allparms} ) {  
  $r->print("\n<td><font size='-1'><input type='checkbox' name='pscat' ");   $r->print("\n<td><font size='-1'><input type='checkbox' name='pscat' ");
  $r->print('value="'.$tempkey.'"');   $r->print('value="'.$tempkey.'"');
  if ($$pscat[0] eq "all" || grep $_ eq $tempkey, @{$pscat}) {   if ($$pscat[0] eq "all" || grep $_ eq $tempkey, @{$pscat}) {
Line 829  ENDSCRIPT Line 830  ENDSCRIPT
   
 sub partmenu {  sub partmenu {
     my ($r,$allparts,$psprt)=@_;      my ($r,$allparts,$psprt)=@_;
     $r->print('<select multiple name="psprt" size="5">');      $r->print('<select multiple name="psprt" size="8">');
     $r->print('<option value="all"');      $r->print('<option value="all"');
     $r->print(' selected') unless (@{$psprt});      $r->print(' selected') unless (@{$psprt});
     $r->print('>'.&mt('All Parts').'</option>');      $r->print('>'.&mt('All Parts').'</option>');
Line 886  ENDMENU Line 887  ENDMENU
 }  }
   
 sub displaymenu {  sub displaymenu {
     my ($r,$allparms,$allparts,$pscat,$psprt)=@_;      my ($r,$allparms,$allparts,$pscat,$psprt,$keyorder)=@_;
     $r->print('<table border="1"><tr><th>'.&mt('Select Parameters to View').'</th><th>'.      $r->print('<table border="1"><tr><th>'.&mt('Select Parameters to View').'</th><th>'.
      &mt('Select Parts to View').'</th></tr><tr><td>');         &mt('Select Parts to View').'</th></tr><tr><td>');  
     &parmmenu($r,$allparms,$pscat);      &parmmenu($r,$allparms,$pscat,$keyorder);
     $r->print('</td><td>');      $r->print('</td><td>');
     &partmenu($r,$allparts,$psprt);      &partmenu($r,$allparts,$psprt);
     $r->print('</td></tr></table>');      $r->print('</td></tr></table>');
Line 923  sub levelmenu { Line 924  sub levelmenu {
     $r->print("</select>");      $r->print("</select>");
 }  }
   
   
   sub sectionmenu {
       my ($r,$selectedsections)=@_;
       my %sectionhash=();
   
       if (&Apache::loncommon::get_sections(
                    $env{'course.'.$env{'request.course.id'}.'.domain'},
                    $env{'course.'.$env{'request.course.id'}.'.num'},
    \%sectionhash)) {
    $r->print('<select name="Section" multiple="true" size="8" >');
    foreach my $s ('all',sort keys %sectionhash) {
       $r->print('    <option value="'.$s.'"');
       foreach (@{$selectedsections}) {
    if ($s eq $_) {
       $r->print(' selected');
       last;
    }
       }
       $r->print('>'.$s."</option>\n");
    }
    $r->print("</select>\n");
       }
   }
   
 sub keysplit {  sub keysplit {
     my $keyp=shift;      my $keyp=shift;
     return (split(/\,/,$keyp));      return (split(/\,/,$keyp));
Line 935  sub keysinorder { Line 960  sub keysinorder {
     } (keys %{$name});      } (keys %{$name});
 }  }
   
   sub keysindisplayorder {
       my ($name,$keyorder)=@_;
       return sort {
    $$keyorder{'parameter_0_'.$a} <=> $$keyorder{'parameter_0_'.$b};
       } (keys %{$name});
   }
   
   sub standardkeyorder {
       return ('parameter_0_opendate' => 1,
       'parameter_0_duedate' => 2,
       'parameter_0_answerdate' => 3,
       'parameter_0_interval' => 4,
       'parameter_0_weight' => 5,
       'parameter_0_maxtries' => 6,
       'parameter_0_hinttries' => 7,
       'parameter_0_contentopen' => 8,
       'parameter_0_contentclose' => 9,
       'parameter_0_type' => 10,
       'parameter_0_problemstatus' => 11,
       'parameter_0_hiddenresource' => 12,
       'parameter_0_hiddenparts' => 13,
       'parameter_0_display' => 14,
       'parameter_0_ordered' => 15,
       'parameter_0_tol' => 16,
       'parameter_0_sig' => 17,
       'parameter_0_turnoffunit' => 18);
   }
   
 ##################################################  ##################################################
 ##################################################  ##################################################
   
Line 998  sub assessparms { Line 1051  sub assessparms {
 #  #
 # Order in which these parameters will be displayed  # Order in which these parameters will be displayed
 #  #
     my %keyorder=('parameter_0_opendate' => 1,      my %keyorder=&standardkeyorder();
                   'parameter_0_duedate' => 2,  
                   'parameter_0_answerdate' => 3,  
                   'parameter_0_interval' => 4,  
                   'parameter_0_weight' => 5,  
                   'parameter_0_maxtries' => 6,  
                   'parameter_0_hinttries' => 7,  
                   'parameter_0_contentopen' => 8,  
                   'parameter_0_contentclose' => 9,  
                   'parameter_0_type' => 10,  
                   'parameter_0_problemstatus' => 11,  
                   'parameter_0_hiddenresource' => 12,  
                   'parameter_0_hiddenparts' => 13,  
                   'parameter_0_display' => 14,  
                   'parameter_0_ordered' => 15,  
                   'parameter_0_tol' => 16,  
                   'parameter_0_sig' => 17,  
                   'parameter_0_turnoffunit' => 18);  
     @ids=();      @ids=();
     %symbp=();      %symbp=();
     %typep=();      %typep=();
Line 1153  sub assessparms { Line 1190  sub assessparms {
     $r->print('</td>');      $r->print('</td>');
  }   }
         $r->print('</td></tr></table>');          $r->print('</td></tr></table>');
  &displaymenu($r,\%allparms,\%allparts,\@pscat,\@psprt);   &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);
         $r->print(&mt('Specific Resource').": ".$resource.          $r->print(&mt('Specific Resource').": ".$resource.
                   '<input type="hidden" value="'.$pssymb.'" name="symb">');                    '<input type="hidden" value="'.$pssymb.'" name="symb"><br />');
     }      }
     &usermenu($r,$uname,$id,$udom,$csec);          &usermenu($r,$uname,$id,$udom,$csec);    
   
Line 1912  sub storedata { Line 1949  sub storedata {
     }      }
     if ($cmd eq 'set') {      if ($cmd eq 'set') {
  my $data=$env{$_};   my $data=$env{$_};
  if ($$olddata{$thiskey} ne $data) {                   my $typeof=$env{'form.typeof_'.$thiskey};
     if ($$olddata{$thiskey} ne $data) { 
     if ($tuname) {      if ($tuname) {
  if (&Apache::lonnet::put('resourcedata',{$tkey=>$data},$tudom,$tuname) eq 'ok') {   if (&Apache::lonnet::put('resourcedata',{$tkey=>$data,
    $tkey.'.type' => $typeof},
    $tudom,$tuname) eq 'ok') {
     $r->print('<br />'.&mt('Stored modified parameter for').' '.      $r->print('<br />'.&mt('Stored modified parameter for').' '.
       &Apache::loncommon::plainname($tuname,$tudom));        &Apache::loncommon::plainname($tuname,$tudom));
  } else {   } else {
Line 1924  sub storedata { Line 1964  sub storedata {
  &Apache::lonnet::devalidateuserresdata($tuname,$tudom);   &Apache::lonnet::devalidateuserresdata($tuname,$tudom);
     } else {      } else {
  $newdata{$thiskey}=$data;   $newdata{$thiskey}=$data;
                     }     $newdata{$thiskey.'.type'}=$typeof; 
                      } 
  }   }
     } elsif ($cmd eq 'del') {      } elsif ($cmd eq 'del') {
  if ($tuname) {   if ($tuname) {
Line 1940  sub storedata { Line 1981  sub storedata {
  }   }
     } elsif ($cmd eq 'datepointer') {      } elsif ($cmd eq 'datepointer') {
  my $data=&Apache::lonhtmlcommon::get_date_from_form($env{$_});   my $data=&Apache::lonhtmlcommon::get_date_from_form($env{$_});
                   my $typeof=$env{'form.typeof_'.$thiskey};
  if (defined($data) and $$olddata{$thiskey} ne $data) {    if (defined($data) and $$olddata{$thiskey} ne $data) { 
     if ($tuname) {      if ($tuname) {
  if (&Apache::lonnet::put('resourcedata',{$tkey=>$data},$tudom,$tuname) eq 'ok') {   if (&Apache::lonnet::put('resourcedata',{$tkey=>$data,
    $tkey.'.type' => $typeof},
    $tudom,$tuname) eq 'ok') {
     $r->print('<br />'.&mt('Stored modified date for').' '.&Apache::loncommon::plainname($tuname,$tudom));      $r->print('<br />'.&mt('Stored modified date for').' '.&Apache::loncommon::plainname($tuname,$tudom));
  } else {   } else {
     $r->print('<h2><font color="red">'.      $r->print('<h2><font color="red">'.
Line 1950  sub storedata { Line 1994  sub storedata {
  }   }
  &Apache::lonnet::devalidateuserresdata($tuname,$tudom);   &Apache::lonnet::devalidateuserresdata($tuname,$tudom);
     } else {      } else {
  $newdata{$thiskey}=$data;    $newdata{$thiskey}=$data;
    $newdata{$thiskey.'.type'}=$typeof; 
     }      }
  }   }
     }      }
Line 1971  sub storedata { Line 2016  sub storedata {
     }      }
     if ($putentries) {      if ($putentries) {
  if (&Apache::lonnet::put('resourcedata',\%newdata,$dom,$crs) eq 'ok') {   if (&Apache::lonnet::put('resourcedata',\%newdata,$dom,$crs) eq 'ok') {
     $r->print('<h2>'.&mt('Stored [_1] parameter(s)</h2>',$putentries));      $r->print('<h3>'.&mt('Stored [_1] parameter(s)',$putentries/2).'</h3>');
  } else {   } else {
     $r->print('<h2><font color="red">'.      $r->print('<h2><font color="red">'.
       &mt('Error storing parameters').'</font></h2>');        &mt('Error storing parameters').'</font></h2>');
Line 1996  sub listdata { Line 2041  sub listdata {
     $tableopen=0;      $tableopen=0;
     my $foundkeys=0;      my $foundkeys=0;
     foreach my $thiskey (sort keys %{$listdata}) {      foreach my $thiskey (sort keys %{$listdata}) {
  if ($$resourcedata{$thiskey.'.type'}) {   if ($$listdata{$thiskey.'.type'}) {
               my $thistype=$$listdata{$thiskey.'.type'};
               if ($$resourcedata{$thiskey.'.type'}) {
    $thistype=$$resourcedata{$thiskey.'.type'};
       }
     my ($middle,$part,$name)=      my ($middle,$part,$name)=
  ($thiskey=~/^$env{'request.course.id'}\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/);   ($thiskey=~/^$env{'request.course.id'}\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/);
     my $section=&mt('All Students');      my $section=&mt('All Students');
Line 2040  sub listdata { Line 2089  sub listdata {
       ':</b></td><td><input type="checkbox" name="del_'.        ':</b></td><td><input type="checkbox" name="del_'.
       $thiskey.'" /></td><td>');        $thiskey.'" /></td><td>');
     $foundkeys++;      $foundkeys++;
     if ($$resourcedata{$thiskey.'.type'}=~/^date/) {      if ($thistype=~/^date/) {
  my $jskey='key_'.$pointer;   my $jskey='key_'.$pointer;
  $pointer++;   $pointer++;
  $r->print(   $r->print(
Line 2050  sub listdata { Line 2099  sub listdata {
 '<input type="hidden" name="datepointer_'.$thiskey.'" value="'.$jskey.'" />'  '<input type="hidden" name="datepointer_'.$thiskey.'" value="'.$jskey.'" />'
   );    );
     } else {      } else {
  $r->print(   $r->print('<input type="text" name="set_'.$thiskey.'" value="'.
   '<input type="text" name="set_'.$thiskey.'" value="'.  
   $$resourcedata{$thiskey}.'">');    $$resourcedata{$thiskey}.'">');
     }      }
       $r->print('<input type="hidden" name="typeof_'.$thiskey.'" value="'.
         $thistype.'">');
     $r->print('</td></tr>');      $r->print('</td></tr>');
  }   }
     }      }
Line 2075  $html Line 2125  $html
 </head>  </head>
 $bodytag  $bodytag
 $breadcrumbs  $breadcrumbs
 <form method="post" action="/adm/parmset?action=newoverview" name="overviewform">  <form method="post" action="/adm/parmset?action=newoverview" name="parmform">
 ENDOVER  ENDOVER
    $r->print(&tableend().      my @ids=();
      '<p><input type="submit" value="'.&mt('Submit').'" /></p></form></body></html>');      my %typep=();
       my %keyp=();
       my %allparms=();
       my %allparts=();
       my %allmaps=();
       my %mapp=();
       my %symbp=();
       my %maptitles=();
       my %uris=();
       my %keyorder=&standardkeyorder();
       my %defkeytype=();
   
       my %alllevs=();
       $alllevs{'Resource Level'}='full';
       $alllevs{'Map Level'}='map';
       $alllevs{'Course Level'}='general';
   
       my $csec=$env{'form.csec'};
   
       my @pscat=&Apache::loncommon::get_env_multiple('form.pscat');
       my $pschp=$env{'form.pschp'};
       my @psprt=&Apache::loncommon::get_env_multiple('form.psprt');
       if (!@psprt) { $psprt[0]='0'; }
   
       my @selected_sections = 
    &Apache::loncommon::get_env_multiple('form.Section');
       @selected_sections = ('all') if (! @selected_sections);
       foreach (@selected_sections) {
           if ($_ eq 'all') {
               @selected_sections = ('all');
           }
       }
   
       my $pssymb='';
       my $parmlev='';
    
       unless ($env{'form.parmlev'}) {
           $parmlev = 'map';
       } else {
           $parmlev = $env{'form.parmlev'};
       }
   
       &extractResourceInformation(\@ids, \%typep,\%keyp, \%allparms, \%allparts, \%allmaps, 
    \%mapp, \%symbp,\%maptitles,\%uris,
    \%keyorder,\%defkeytype);
   
   # Menu to select levels, etc
   
       $r->print('<table border="1"><tr><td>');
       &levelmenu($r,\%alllevs,$parmlev);
       if ($parmlev ne 'general') {
    $r->print('<td>');
    &mapmenu($r,\%allmaps,$pschp,\%maptitles);
    $r->print('</td>');
       }
       $r->print('</td></tr></table>');
   
       $r->print('<table border="1"><tr><td>');  
       &parmmenu($r,\%allparms,\@pscat,\%keyorder);
       $r->print('</td><td>');
       &partmenu($r,\%allparts,\@psprt);
       $r->print('</td><td>');
       &sectionmenu($r,\@selected_sections);
       $r->print('</td></tr></table>'.
         '<p><input type="submit" name="dis" value="'.&mt('Display').'" /></p>');
   
   # Build the list data hash from the specified parms
   
       my $listdata;
       %{$listdata}=();
   
       foreach my $cat (@pscat) {
    foreach my $section (@selected_sections) {
       foreach my $part (@psprt) {
                   my $rootparmkey=$env{'request.course.id'};
                   if (($section ne 'all') && ($section ne 'none') && ($section)) {
       $rootparmkey.='.['.$section.']';
    }
    if ($parmlev eq 'general') {
   # course-level parameter
       my $newparmkey=$rootparmkey.'.'.$part.'.'.$cat;
       $$listdata{$newparmkey}=1;
       $$listdata{$newparmkey.'.type'}=$defkeytype{$cat};
    } elsif ($parmlev eq 'map') {
   # map-level parameter
       foreach my $mapid (keys %allmaps) {
    if (($pschp ne 'all') && ($pschp ne $mapid)) { next; }
    my $newparmkey=$rootparmkey.'.'.$allmaps{$mapid}.'___(all).'.$part.'.'.$cat;
                           $$listdata{$newparmkey}=1;
                           $$listdata{$newparmkey.'.type'}=$defkeytype{$cat};
       }
    } else {
   # resource-level parameter
       foreach my $rid (@ids) {
    my ($map,$resid,$url)=&Apache::lonnet::decode_symb($symbp{$rid});
    if (($pschp ne 'all') && ($allmaps{$pschp} ne $map)) { next; }
    my $newparmkey=$rootparmkey.'.'.$symbp{$rid}.'.'.$part.'.'.$cat;
                           $$listdata{$newparmkey}=1;
                           $$listdata{$newparmkey.'.type'}=$defkeytype{$cat};
       }
    }
       }
    }
       }
   
       if (($env{'form.store'}) || ($env{'form.dis'})) {
   
    if ($env{'form.store'}) { &storedata($r,$crs,$dom); }
   
   # Read modified data
   
    my $resourcedata=&readdata($crs,$dom);
   
   # List data
   
    &listdata($r,$resourcedata,$listdata);
       }
       $r->print(&tableend().
        ((($env{'form.store'}) || ($env{'form.dis'}))?'<p><input type="submit" name="store" value="'.&mt('Store').'" /></p>':'').
         '</form></body></html>');
 }  }
   
 sub overview {  sub overview {

Removed from v.1.210  
changed lines
  Added in v.1.212


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