blob: 7fa66bbfda5e755e968686e1eabeef7452960071 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
<!--
$FML: cgi.examples.sgml,v 1.1 2005/07/27 12:21:35 fukachan Exp $
-->
<sect1 id="cgi.internal.example.isa">
<title>
CGI Implementation: Inheritance Among CGI Classes
</title>
<para>
@ISA of config.cgi follows:
<screen>
FML::CGI::Menu FML::Process::CGI::Kernel FML::Process::CGI::Param
</screen>
In the case of thread.cgi, @ISA is
<screen>
FML::CGI::Thread FML::Process::CGI::Kernel FML::Process::CGI::Param
</screen>
</para>
<para>
.cgi specific codes locate at FML::CGI:: class layer.
</para>
<para>
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.
<screen>
run_cgi_log
run_cgi_dummy
run_cgi_date
</screen>
</para>
</sect1>
<sect1 id="cgi.internal.example.config.cgi">
<title>
CGI Implementation: config.cgi
</title>
<para>
@ISA of config.cgi is as follows:
<screen>
FML::CGI::Menu FML::Process::CGI::Kernel FML::Process::CGI::Param
</screen>
Let see processing of config.cgi below.
</para>
<para>
config.cgi process object $curproc is a
FML::Process::CGI::Kernel class.
<screen>
new()
prepare()
verify_request()
run()
finish()
</screen>
is sequentially called from FML::Process::CGI::Kernel class.
</para>
<para>
run() is important. run() executes the following methods sequentially.
<screen>
$curproc->html_start(); (FML::CGI::Menu)
$curproc->_drive_cgi_by_table(); (FML::Process::CGI::Kernel)
$curproc->html_end(); (FML::CGI::Menu)
</screen>
_drive_cgi_by_table() prepares the screen.
This function calls the main part of CGI.
</para>
<para>
$curproc->_drive_cgi_by_table()
calles the following run_XXX() methods.
<screen>
run_cgi_main (FML::CGI::Menu)
</screen>
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.
</para>
<para>
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.
</para>
<para>
There are several other run_cgi_XXX() methods. They are optional for
screen creation.
</para>
<para>
The following run_cgi_XXX() uses the default method.
<screen>
run_cgi_title FML::Process::CGI::Kernel (show title)
run_cgi_options FML::Process::CGI::Kernel (show language selection)
</screen>
.cgi specific methods are as follows:
<screen>
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
</screen>
</para>
<para>
run_cgi_menu() executes
FML::Command::Admin::COMMAND::cgi_menu()
via cgi_execute_cgi_menu() method.
</para>
</sect1>
|