CGI Implementation: Inheritance Among CGI Classes
@ISA of config.cgi follows:
FML::CGI::Menu FML::Process::CGI::Kernel FML::Process::CGI::Param
In the case of thread.cgi, @ISA is
FML::CGI::Thread FML::Process::CGI::Kernel FML::Process::CGI::Param
.cgi specific codes locate at FML::CGI:: class layer.
FML::Process::CGI::Kernel provides the main part of CGI process
and CGI specific function run_cgi_XXX().
If needed, FML::CGI:: class overloads this layer.
Currently,
the following methods in FML::Process::CGI::Kernel are not used.
run_cgi_log
run_cgi_dummy
run_cgi_date
CGI Implementation: config.cgi
@ISA of config.cgi is as follows:
FML::CGI::Menu FML::Process::CGI::Kernel FML::Process::CGI::Param
Let see processing of config.cgi below.
config.cgi process object $curproc is a
FML::Process::CGI::Kernel class.
new()
prepare()
verify_request()
run()
finish()
is sequentially called from FML::Process::CGI::Kernel class.
run() is important. run() executes the following methods sequentially.
$curproc->html_start(); (FML::CGI::Menu)
$curproc->_drive_cgi_by_table(); (FML::Process::CGI::Kernel)
$curproc->html_end(); (FML::CGI::Menu)
_drive_cgi_by_table() prepares the screen.
This function calls the main part of CGI.
$curproc->_drive_cgi_by_table()
calles the following run_XXX() methods.
run_cgi_main (FML::CGI::Menu)
calls cgi_execute_command (FML::Process::CGI::Kernel) to
execute FML::Command::Admin::$COMMAND via FML::Command class.
This is the main part of command execution via CGI but
the screen creation is a role of another part.
For example, consider subscribe an address via CGI.
run_cgi_main() executes the real process of subscription.
Instead run_cgi_menu() creates input menu.
Former calls FML::Command::Admin::subscribe::process() method,
latter calls FML::Command::Admin::subscribe::cgi_menu() method.
There are several other run_cgi_XXX() methods. They are optional for
screen creation.
The following run_cgi_XXX() uses the default method.
run_cgi_title FML::Process::CGI::Kernel (show title)
run_cgi_options FML::Process::CGI::Kernel (show language selection)
.cgi specific methods are as follows:
run_cgi_navigator FML::CGI::Menu
run_cgi_help FML::CGI::Menu
run_cgi_command_help FML::CGI::Menu
run_cgi_menu FML::CGI::Menu
run_cgi_menu() executes
FML::Command::Admin::COMMAND::cgi_menu()
via cgi_execute_cgi_menu() method.