Hi,

I am building a web-based system and am trying to use CGI::Application
and HTML::Template to achieve both a modular structure and design/code
separation.

My design goal can be summarized as:

-- Base.pl is instance script for base module Base.pm
-- Base.pm throws a HTML page with a link which links to 
another instance script data_entry_index.pl
-- data_entry_index.pl is instance script for data_entry.pm
module which I want to be the child of Base.pm and be 
able to have access to it's app instance but is not!


Base.pm module
-----------------------------------------------------------
#!/usr/local/bin/perl

package BASE;
use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use DBI;
use HTML::Template;
use CGI::Session qw/-ip-match/;
use base 'CGI::Application';

sub setup {

my $self = shift;
$self->start_mode('display_entry_screen');
$self->run_modes(
'display_entry_screen' => 'display_entry_screen',
);

}

sub display_entry_screen {

my $self = shift;
# I am purposely setting this parameter to test if it
# is accessible in the child module
$self->param('here' => 'here');
my $data_entry_screen = 
"/software/cgi-bin/SoftwareDistribution/data_entry/
data_entry_index.pl";

my $index_page = $self->load_tmpl('index_screen.tmpl',
die_on_bad_params => 0,
cache => 1
);

$index_page->param(data_entry_link => 
$data_entry_screen);
$index_page->output;
}
-----------------------------------------------------------


and am calling the above module using the following instance script 

Base.pl
------------------------------------------------------------
#!/usr/local/bin/perl

use lib '/export/home/r/rangask/software/cgi-bin/SoftwareDistribution';

use base 'BASE';
use strict;

my $webapp = BASE->new(TMPL_PATH 
=> '/export/home/r/rangask/software/html/'
);
$webapp->run();
------------------------------------------------------------

Now Base.pm results in a screen with a single link from where I call
another instance script. That instance script calls a module which
needs to use Base.pm 

as it's 'parent'. But I find thats not happening. The code is pasted
below 

data_entry_index.pl
------------------------------------------------------------
#!/usr/local/bin/perl

use lib
'/export/home/r/rangask/software/cgi-bin/SoftwareDistribution/data_entry';

use data_entry;
use strict;

use lib '/export/home/r/rangask/software/cgi-bin/SoftwareDistribution';
use base 'BASE';


my $webapp = data_entry->new(
TMPL_PATH => '/export/home/r/rangask/software/html/'
);
$webapp->run();
------------------------------------------------------------

data_entry.pm
------------------------------------------------------------
#!/usr/local/bin/perl

package data_entry;
use CGI::Application;
use CGI::Session;
use CGI::Application::ValidateRM;
use Data::FormValidator;
use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use HTML::Template;
use lib '/export/home/r/rangask/software/cgi-bin/SoftwareDistribution';
use base 'BASE';

sub setup {

my $self = shift;
$self->start_mode('data_entry_user_details');
$self->run_modes(
'data_entry_user_details' 
=> 'data_entry_user_details',
);
}

sub data_entry_user_details {

my $self = shift;

# This should have given me a 1 because of the 'here' param I set in
Base.pm but it gives
a '0'!!
return $self->param();

}
------------------------------------------------------------


Please advise: Is my code wrong or is this design flawed for what I am
trying to accomplish?

Thanks,
Sharad



                
__________________________________ 
Do you Yahoo!? 
Meet the all-new My Yahoo! - Try it today! 
http://my.yahoo.com 
 


---------------------------------------------------------------------
Web Archive:  http://www.mail-archive.com/cgiapp@lists.erlbaum.net/
              http://marc.theaimsgroup.com/?l=cgiapp&r=1&w=2
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to