Diff for /loncom/interface/lonparmset.pm between versions 1.381 and 1.389

version 1.381, 2007/09/11 01:59:30 version 1.389, 2008/01/22 22:37:18
Line 2124  sub crsenv { Line 2124  sub crsenv {
                 if ($name eq 'cloners') {                  if ($name eq 'cloners') {
                     &change_clone($value,\@oldcloner);                      &change_clone($value,\@oldcloner);
                 }                  }
                 # Flush the course logs so course description is immediately updated                  # Update environment and nohist_courseids.db
                 if ($name eq 'description' && defined($value)) {                  if ($name eq 'description' && defined($value)) {
                     &Apache::lonnet::flushcourselogs();                      my %crsinfo = 
                           &Apache::lonnet::courseiddump($dom,'.',1,'.','.',
                                                    $crs,undef,undef,'Course');
                       &Apache::lonnet::appenv('course.'.$env{'request.course.id'}.'.description' => $value);
                       if (ref($crsinfo{$env{'request.course.id'}}) eq 'HASH') {
                           $crsinfo{$env{'request.course.id'}}{'description'} = $value; 
                           my $chome = &Apache::lonnet::homeserver($crs,$dom);
                           my $putresult =
                               &Apache::lonnet::courseidput($dom,\%crsinfo,
                                                            $chome,'notime');
                       }
                 }                  }
             } else {              } else {
                 $setoutput.=&mt('Unable to set').' <b>'.$name.'</b> '.&mt('to').                  $setoutput.=&mt('Unable to set').' <b>'.$name.'</b> '.&mt('to').
Line 2493  sub storedata { Line 2503  sub storedata {
             if ($tuname) {              if ($tuname) {
  $tkey=~s/\.\[useropt\:$tuname\:$tudom\]\./\./;   $tkey=~s/\.\[useropt\:$tuname\:$tudom\]\./\./;
     }      }
     if ($cmd eq 'set') {      if ($cmd eq 'set' || $cmd eq 'datepointer' || $cmd eq 'dateinterval') {
  my $data=$env{$_};   my ($data, $typeof, $text);
                 my $typeof=$env{'form.typeof_'.$thiskey};   if ($cmd eq 'set') {
   if ($$olddata{$thiskey} ne $data) {       $data=$env{$_};
       $typeof=$env{'form.typeof_'.$thiskey};
       $text = &mt('Saved modified parameter for');
    } elsif ($cmd eq 'datepointer') {
       $data=&Apache::lonhtmlcommon::get_date_from_form($env{$_});
       $typeof=$env{'form.typeof_'.$thiskey};
       $text = &mt('Saved modified date for');
    } elsif ($cmd eq 'dateinterval') {
       $data=&get_date_interval_from_form($thiskey);
       $typeof=$env{'form.typeof_'.$thiskey};
       $text = &mt('Saved modified date for');
    }
    if (defined($data) and $$olddata{$thiskey} ne $data) { 
     if ($tuname) {      if ($tuname) {
  if (&Apache::lonnet::put('resourcedata',{$tkey=>$data,   if (&Apache::lonnet::put('resourcedata',{$tkey=>$data,
  $tkey.'.type' => $typeof},   $tkey.'.type' => $typeof},
  $tudom,$tuname) eq 'ok') {   $tudom,$tuname) eq 'ok') {
     &log_parmset({$tkey=>$data,$tkey.'.type' => $typeof},0,$tuname,$tudom);      &log_parmset({$tkey=>$data,$tkey.'.type' => $typeof},0,$tuname,$tudom);
     $r->print('<br />'.&mt('Saved modified parameter for').' '.      $r->print('<br />'.$text.' '.
       &Apache::loncommon::plainname($tuname,$tudom));        &Apache::loncommon::plainname($tuname,$tudom));
  } else {   } else {
     $r->print('<div class="LC_error">'.      $r->print('<div class="LC_error">'.
Line 2527  sub storedata { Line 2549  sub storedata {
  } else {   } else {
     push (@deldata,$thiskey,$thiskey.'.type');      push (@deldata,$thiskey,$thiskey.'.type');
  }   }
     } elsif ($cmd eq 'datepointer') {  
  my $data=&Apache::lonhtmlcommon::get_date_from_form($env{$_});  
                 my $typeof=$env{'form.typeof_'.$thiskey};  
  if (defined($data) and $$olddata{$thiskey} ne $data) {   
     if ($tuname) {  
  if (&Apache::lonnet::put('resourcedata',{$tkey=>$data,  
  $tkey.'.type' => $typeof},  
  $tudom,$tuname) eq 'ok') {  
     &log_parmset({$tkey=>$data,$tkey.'.type' => $typeof},0,$tuname,$tudom);  
     $r->print('<br />'.&mt('Saved modified date for').' '.&Apache::loncommon::plainname($tuname,$tudom));  
  } else {  
     $r->print('<div class="LC_error">'.  
       &mt('Error saving parameters').'</div>');  
  }  
  &Apache::lonnet::devalidateuserresdata($tuname,$tudom);  
     } else {  
  $newdata{$thiskey}=$data;  
  $newdata{$thiskey.'.type'}=$typeof;   
     }  
  }  
     }      }
  }   }
     }      }
Line 2597  sub parse_listdata_key { Line 2599  sub parse_listdata_key {
  $realm=~s/\.type//;   $realm=~s/\.type//;
     }      }
     # split into resource+part and parameter name      # split into resource+part and parameter name
     my ($res, $parm) = ($realm=~/^(.*)\.(.*)$/);      my ($res,    $parm) = ($realm=~/^(.*)\.(.*)$/);
     my ($res, $part) = ($res  =~/^(.*)\.(.*)$/);         ($res, my $part) = ($res  =~/^(.*)\.(.*)$/);
     return ($student,$res,$part,$parm);      return ($student,$res,$part,$parm);
 }  }
   
Line 2729  sub listdata { Line 2731  sub listdata {
 '<input type="hidden" name="datepointer_'.$thiskey.'" value="'.$jskey.'" />'.  '<input type="hidden" name="datepointer_'.$thiskey.'" value="'.$jskey.'" />'.
 &date_sanity_info($$resourcedata{$thiskey})  &date_sanity_info($$resourcedata{$thiskey})
   );    );
     } elsif ($thistype eq 'string_yesno') {      } elsif ($thistype eq 'date_interval') {
  my $showval;   $r->print(&date_interval_selector($thiskey,
  if (defined($$resourcedata{$thiskey})) {    $$resourcedata{$thiskey}));
     $showval=$$resourcedata{$thiskey};      } elsif ($thistype =~ m/^string/) {
  }   $r->print(&string_selector($thistype,$thiskey,
  $r->print('<label><input type="radio" name="set_'.$thiskey.     $$resourcedata{$thiskey}));
   '" value="yes"');  
  if ($showval eq 'yes') {  
     $r->print(' checked="checked"');  
  }  
                 $r->print(' />'.&mt('Yes').'</label> ');  
  $r->print('<label><input type="radio" name="set_'.$thiskey.  
   '" value="no"');  
  if ($showval eq 'no') {  
     $r->print(' checked="checked"');  
  }  
                 $r->print(' />'.&mt('No').'</label>');  
     } else {      } else {
  my $showval;   $r->print(&default_selector($thiskey,$$resourcedata{$thiskey}));
  if (defined($$resourcedata{$thiskey})) {  
     $showval=$$resourcedata{$thiskey};  
  }  
  $r->print('<input type="text" name="set_'.$thiskey.'" value="'.  
   $showval.'">');  
     }      }
     $r->print('<input type="hidden" name="typeof_'.$thiskey.'" value="'.      $r->print('<input type="hidden" name="typeof_'.$thiskey.'" value="'.
       $thistype.'">');        $thistype.'">');
Line 2762  sub listdata { Line 2748  sub listdata {
     return $foundkeys;      return $foundkeys;
 }  }
   
   
   sub date_interval_selector {
       my ($thiskey, $showval) = @_;
       my $result;
       foreach my $which (['days', 86400, 31],
          ['hours', 3600, 23],
          ['minutes', 60, 59],
          ['seconds',  1, 59]) {
    my ($name, $factor, $max) = @{ $which };
    my $amount = int($showval/$factor);
    $showval  %= $factor;
    my %select = ((map {$_ => $_} (0..$max)),
         'select_form_order' => [0..$max]);
    $result .= &Apache::loncommon::select_form($amount,$name.'_'.$thiskey,
      %select);
    $result .= ' '.&mt($name);
       }
       $result .= '<input type="hidden" name="dateinterval_'.$thiskey.'" />';
       return $result;
   
   }
   
   sub get_date_interval_from_form {
       my ($key) = @_;
       my $seconds = 0;
       foreach my $which (['days', 86400],
          ['hours', 3600],
          ['minutes', 60],
          ['seconds',  1]) {
    my ($name, $factor) = @{ $which };
    if (defined($env{'form.'.$name.'_'.$key})) {
       $seconds += $env{'form.'.$name.'_'.$key} * $factor;
    }
       }
       return $seconds;
   }
   
   
   sub default_selector {
       my ($thiskey, $showval) = @_;
       return '<input type="text" name="set_'.$thiskey.'" value="'.$showval.'" />';
   }
   
   my %strings = 
       (
        'string_yesno'
                => [[ 'yes', 'Yes' ],
    [ 'no', 'No' ]],
        'string_problemstatus'
                => [[ 'yes', 'Yes' ],
    [ 'answer', 'Yes, and show correct answer if they exceed the maxium number of tries.' ],
    [ 'no', 'No, don\'t show correct/incorrect feedback.' ],
    [ 'no_feedback_ever', 'No, show no feedback at all.' ]],
        );
   
   
   sub string_selector {
       my ($thistype, $thiskey, $showval) = @_;
       
       if (!exists($strings{$thistype})) {
    return &default_selector($thiskey,$showval);
       }
   
       my $result;
       foreach my $possibilities (@{ $strings{$thistype} }) {
    my ($name, $description) = @{ $possibilities };
    $result .= '<label><input type="radio" name="set_'.$thiskey.
     '" value="'.$name.'"';
    if ($showval eq $name) {
       $result .= ' checked="checked"';
    }
    $result .= ' />'.&mt($description).'</label> ';
       }
       return $result;
   }
   
   #
   # Shift all start and end dates by $shift
   #
   
   sub dateshift {
       my ($shift)=@_;
       my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
       my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
       my %data=&Apache::lonnet::dump('resourcedata',$dom,$crs);
   # ugly retro fix for broken version of types
       foreach my $key (keys %data) {
           if ($key=~/\wtype$/) {
               my $newkey=$key;
               $newkey=~s/type$/\.type/;
               $data{$newkey}=$data{$key};
               delete $data{$key};
           }
       }
   # go through all parameters and look for dates
       foreach my $key (keys %data) {
          if ($data{$key.'.type'}=~/^date_(start|end)$/) {
             my $newdate=$data{$key}+$shift;
             &Apache::lonnet::put('resourcedata',{$key => $newdate},$dom,$crs);
          }
       }
   }
   
 sub newoverview {  sub newoverview {
     my ($r) = @_;      my ($r) = @_;
   
Line 2992  ENDOVER Line 3081  ENDOVER
  next if (!exists($resourcedata->{$thiskey.'.type'})   next if (!exists($resourcedata->{$thiskey.'.type'})
  && $thiskey=~/\.type$/);   && $thiskey=~/\.type$/);
  my %data = &parse_key($thiskey);   my %data = &parse_key($thiskey);
  if (exists($data{'realm_exists'})   if (1) { #exists($data{'realm_exists'})
     && !$data{'realm_exists'}) {      #&& !$data{'realm_exists'}) {
     $r->print(&Apache::loncommon::start_data_table_row().      $r->print(&Apache::loncommon::start_data_table_row().
       '<tr>'.        '<tr>'.
       '<td><input type="checkbox" name="del_'.$thiskey.'" /></td>'      );        '<td><input type="checkbox" name="del_'.$thiskey.'" /></td>'      );

Removed from v.1.381  
changed lines
  Added in v.1.389


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