version 1.224, 2005/06/17 18:11:42
|
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=(); |
foreach (keys %env) { |
my %triggers=(); |
if ($_=~/^form\.(\w+)\_action$/) { |
foreach my $key (keys(%env)) { |
|
if ($key=~/^form\.(\w+)\_action$/) { |
my $tempkey=$1; |
my $tempkey=$1; |
if ($env{$_}) { |
my $action=$env{$key}; |
$newrules{$tempkey.'_action'}=$env{$_}; |
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 2603 ENDDEFHEAD
|
Line 2639 ENDDEFHEAD
|
$newrules{$tempkey.'_value'}=$env{'form.'.$tempkey.'_value'}; |
$newrules{$tempkey.'_value'}=$env{'form.'.$tempkey.'_value'}; |
} |
} |
} else { |
} else { |
push @delrules,$tempkey.'_action'; |
push(@delrules,$tempkey.'_action'); |
push @delrules,$tempkey.'_hours'; |
push(@delrules,$tempkey.'_type'); |
push @delrules,$tempkey.'_min'; |
push(@delrules,$tempkey.'_hours'); |
push @delrules,$tempkey.'_sec'; |
push(@delrules,$tempkey.'_min'); |
push @delrules,$tempkey.'_value'; |
push(@delrules,$tempkey.'_sec'); |
|
push(@delrules,$tempkey.'_value'); |
} |
} |
} |
} |
} |
} |
|
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(); |