From: Kirrily R. <sk...@us...> - 2001-02-23 02:44:09
|
Update of /cvsroot/formmagick/formmagick In directory usw-pr-cvs1:/tmp/cvs-serv9576 Modified Files: FormMagick.pm Log Message: I'm in a state of confusedness, but it's not broken any worse than it was before, so I'll check it in anyway. I've abstracted a bit of the page_(post|pre)_event routines into a do_outside_routine one. It seems to work. It calls the page POST-EVENT in the e-smith demo fine, as demonstrated by the debug message "I'm in the post retrieval page routine" which is actually embedded in that routine. However, that routine is trying to access $cgi to fiddle with the "wherenext" param -- both to read it and to modify it. This doesn't seem to be working. I think this is because I'm not clear on how to actually access $cgi from out there. Help! (now I'm gonna go shopping.) Index: FormMagick.pm =================================================================== RCS file: /cvsroot/formmagick/formmagick/FormMagick.pm,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -r1.33 -r1.34 *** FormMagick.pm 2001/02/22 22:36:09 1.33 --- FormMagick.pm 2001/02/22 23:11:12 1.34 *************** *** 601,619 **** my $options_field = shift; - # We want to call option_function here, inside an exec--- first within - # the scope of the script that uses this module, then within our own scope, - # to get an array (hash?) from option_function. - - # right now, options functions return an array, because I figured - # orderedness was more important than having separate values and labels - # in SELECTs. -- SRL - - # find out what the options function is. - my $calling_routine = (caller(1))[0] || ""; - - # find out what file called FormMagick, so we can refer to the - # $options_field defined there. (Should this be global to the package?) - # XXX this needs work - # we got here through three layers of call stack, so walk up the stack # three times. The 0th element of caller() is the package that's using --- 601,604 ---- *************** *** 652,657 **** sub calling_info { my $calling_file = (caller(2))[1]; ! $calling_file =~ m!/([^/]+)\.!; ! $calling_file = $1; return $calling_file; --- 637,641 ---- sub calling_info { my $calling_file = (caller(2))[1]; ! $calling_file =~ s!.*/!!; # strip leading directories return $calling_file; *************** *** 729,775 **** sub page_pre_event { my ($self, $cgi) = @_; - print "This is the page pre-event.<br>"; - - # find out what the page pre_event action is. my $pre_page_routine = $self->{current_page}[0]->{'PRE-EVENT'}; ! ! my $calling_file = calling_info(); ! ! my $voodoo = "\&$calling_file\:\:$pre_page_routine(\$cgi)"; ! ! # if the pre_page_routine is defined in the calling file, ! # it'll run. Otherwise, we'll give some simple display of the ! # variables that were submitted. ! ! unless (eval $voodoo) { ! debug($self, "There was no pre-page routine defined.<p>\n") ! } ! ! } sub page_post_event { my ($self, $cgi) = @_; - - print "This is the page post-event.<br>"; - # find out what the page pre_event action is. - my $post_page_routine = $self->{current_page}[0]->{'PRE-EVENT'}; ! my $calling_file = calling_info(); ! ! my $voodoo = "\&$calling_file\:\:$post_page_routine(\$cgi)"; ! # if the post_page_routine is defined in the calling file, ! # it'll run. Otherwise, we'll give some simple display of the ! # variables that were submitted. ! unless (eval $voodoo) { ! debug($self, "There was no post-page routine defined.<p>\n") ! } } --- 713,745 ---- sub page_pre_event { my ($self, $cgi) = @_; print "This is the page pre-event.<br>"; my $pre_page_routine = $self->{current_page}[0]->{'PRE-EVENT'}; ! do_external_routine($self, $cgi, $pre_page_routine); } sub page_post_event { my ($self, $cgi) = @_; print "This is the page post-event.<br>"; + my $post_page_routine = $self->{current_page}[0]->{'POST-EVENT'}; + do_external_routine($self, $cgi, $post_page_routine); ! } ! sub do_external_routine { ! my $self = shift; ! my $cgi = shift; ! my $routine = shift; ! my $calling_package = (caller(2))[0]; ! #debug($self, "Calling package is $calling_package"); ! ! my $voodoo = "\&$calling_package\:\:$routine(\$cgi)"; + debug($self, "Voodoo is $voodoo"); + unless (eval $voodoo) { + debug($self, "There was no routine defined.") + } } |