Diff for /loncom/interface/lonparmset.pm between versions 1.225 and 1.226

version 1.225, 2005/06/17 18:29:45 version 1.226, 2005/06/17 20:01:50
Line 291  sub storeparm { Line 291  sub storeparm {
 # - username  # - username
 # - userdomain  # - userdomain
   
   my %recstack;
 sub storeparm_by_symb {  sub storeparm_by_symb {
       my ($symb,$spnam,$snum,$nval,$ntype,$uname,$udom,$csec,$recflag)=@_;
       unless ($recflag) {
   # first time call
    %recstack=();
    $recflag=1;
       }
   # store parameter
       &storeparm_by_symb_inner
    ($symb,$spnam,$snum,$nval,$ntype,$uname,$udom,$csec);
       my ($prefix,$parm)=($spnam=~/^(.*[\_\.])([^\_\.]+)$/);
   # remember that this was set
       $recstack{$parm}=1;
   # what does this trigger?
       foreach my $triggered (split(/\:/,&rulescache($parm.'_triggers'))) {
   # don't backfire
          unless ((!$triggered) || ($recstack{$triggered})) {
      my $action=&rulescache($triggered.'_action');
      my ($whichaction,$whichparm)=($action=~/^(.*\_)([^\_]+)$/);
   # set triggered parameter on same level
      my $newspnam=$prefix.$triggered;
   
      &Apache::lonnet::logthis('About to set '.$newspnam.' using action '.$whichaction.' with '.$parm.' ('.$whichparm.')');
          }
       }
       return '';
   }
   
   sub storeparm_by_symb_inner {
 # ---------------------------------------------------------- Get symb, map, etc  # ---------------------------------------------------------- Get symb, map, etc
     my ($symb,$spnam,$snum,$nval,$ntype,$uname,$udom,$csec)=@_;      my ($symb,$spnam,$snum,$nval,$ntype,$uname,$udom,$csec)=@_;
 # ---------------------------------------------------------- Construct prefixes  # ---------------------------------------------------------- Construct prefixes
Line 2590  ENDDEFHEAD Line 2619  ENDDEFHEAD
     if ($env{'form.storerules'}) {      if ($env{'form.storerules'}) {
  my %newrules=();   my %newrules=();
  my @delrules=();   my @delrules=();
    my %triggers=();
  foreach my $key (keys(%env)) {   foreach my $key (keys(%env)) {
             if ($key=~/^form\.(\w+)\_action$/) {              if ($key=~/^form\.(\w+)\_action$/) {
  my $tempkey=$1;   my $tempkey=$1;
                 if ($env{$key}) {   my $action=$env{$key};
     $newrules{$tempkey.'_action'}=$env{$key};                  if ($action) {
       $newrules{$tempkey.'_action'}=$action;
       if ($action ne 'default') {
    my ($whichaction,$whichparm)=($action=~/^(.*\_)([^\_]+)$/);
    $triggers{$whichparm}.=$tempkey.':';
       }
       $newrules{$tempkey.'_type'}=$defkeytype{$tempkey};
     if (&isdateparm($defkeytype{$tempkey})) {      if (&isdateparm($defkeytype{$tempkey})) {
  $newrules{$tempkey.'_hours'}=$env{'form.'.$tempkey.'_hours'};   $newrules{$tempkey.'_hours'}=$env{'form.'.$tempkey.'_hours'};
  $newrules{$tempkey.'_min'}=$env{'form.'.$tempkey.'_min'};   $newrules{$tempkey.'_min'}=$env{'form.'.$tempkey.'_min'};
Line 2604  ENDDEFHEAD Line 2640  ENDDEFHEAD
     }      }
  } else {   } else {
     push(@delrules,$tempkey.'_action');      push(@delrules,$tempkey.'_action');
       push(@delrules,$tempkey.'_type');
     push(@delrules,$tempkey.'_hours');      push(@delrules,$tempkey.'_hours');
     push(@delrules,$tempkey.'_min');      push(@delrules,$tempkey.'_min');
     push(@delrules,$tempkey.'_sec');      push(@delrules,$tempkey.'_sec');
Line 2611  ENDDEFHEAD Line 2648  ENDDEFHEAD
  }   }
     }      }
  }   }
    foreach my $key (keys %allparms) {
       $newrules{$key.'_triggers'}=$triggers{$key};
    }
  &Apache::lonnet::put('parmdefactions',\%newrules,$dom,$crs);   &Apache::lonnet::put('parmdefactions',\%newrules,$dom,$crs);
  &Apache::lonnet::del('parmdefactions',\@delrules,$dom,$crs);   &Apache::lonnet::del('parmdefactions',\@delrules,$dom,$crs);
  &resetrulescache();   &resetrulescache();

Removed from v.1.225  
changed lines
  Added in v.1.226


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