diff options
| author | fukachan <fukachan> | 2003-07-28 15:20:17 +0000 |
|---|---|---|
| committer | fukachan <fukachan> | 2003-07-28 15:20:17 +0000 |
| commit | 13ef97114ca3f44fe534d0f4228c9e21b9febd8e (patch) | |
| tree | 3b0874fce4fe8676d34f2213950b7e9c959e7d34 | |
| parent | d9c8ecee3855d3d88842a4b842c8f4ea2013c8f6 (diff) | |
| download | fml8-13ef97114ca3f44fe534d0f4228c9e21b9febd8e.tar.gz fml8-13ef97114ca3f44fe534d0f4228c9e21b9febd8e.tar.bz2 fml8-13ef97114ca3f44fe534d0f4228c9e21b9febd8e.zip | |
trasnlated
| -rw-r--r-- | fml/doc/en/tutorial/digest/chapter.sgml | 158 | ||||
| -rw-r--r-- | fml/doc/en/tutorial/message/chapter.sgml | 110 | ||||
| -rw-r--r-- | fml/doc/en/tutorial/module/create.sgml | 120 | ||||
| -rw-r--r-- | fml/doc/en/tutorial/module/nativelanguage.sgml | 48 |
4 files changed, 436 insertions, 0 deletions
diff --git a/fml/doc/en/tutorial/digest/chapter.sgml b/fml/doc/en/tutorial/digest/chapter.sgml new file mode 100644 index 00000000..3fe37655 --- /dev/null +++ b/fml/doc/en/tutorial/digest/chapter.sgml @@ -0,0 +1,158 @@ +<!-- + $FML$ + $jaFML: chapter.sgml,v 1.3 2003/04/15 14:51:39 fukachan Exp $ +--> + +<chapter id="digest"> + <title> + digest + </title> + +<para> +run +<screen> +/usr/local/libexec/fml/digest $ml_name +</screen> +periodically for digest delivery. +</para> + +<warning> +<para> +simple version yet now. +</para> +</warning> + + +<sect1 id="digest.config.files"> + <title> + files userd by digest delivery + </title> + +<para> +This program uses the following files under $ml_home_dir. +<screen> +seq-digest +members-digest +recipients-digest +</screen> +</para> + +<para> +seq-digest holds the last sequence delivered as digest. +</para> + +<para> +members-digest is dummy. +recipients-digest is a recipient list. +</para> + +<para> +The argument of $digest_recipient_maps is IO::Adapter, so you can use +mysql here. +</para> + +</sect1> + + +<sect1 id="digest.command"> + <title> + idea: digest related commands + </title> + + +<!-- + XXX-TODO digest related commands +--> + + +<para> +Idea on digest commands (references: fml-devel:313). +</para> + +<para> +Hmm, how about the further extension? +</para> + + +<sect2> + <title> + makefml command + </title> + +<para> +<screen> +makefml digest $ml $address on +makefml digeston $ml $address + +makefml digest $ml $address off +makefml digestoff $ml $address +</screen> +(These commnds are implemented already). +</para> + +<para> +</para> + +</sect2> + + +<sect2> + <title> + admin command mail + </title> + +<para> +<screen> +admin digest $address on +admin digest $address off +</screen> +(These commnds are implemented already). +</para> + +</sect2> + + +<sect2> + <title> + user level command mail ? + </title> + +<para> +(not implemented). +<screen> +digest on +digest off +</screen> +Enforce confirmation ? +</para> + +<para> +The confirmation is needed ? Yes, we should need it to unify the fml +fundamental design. We should restrict address manipulation functions +as could as possible. +</para> + +</sect2> + + +<sect2> + <title> + CGI + </title> + +<para> +(not yet implemented). +<screen> +digeston +digestoff +</screen> +? +</para> + +</sect2> + + +</sect1> + + +</chapter> diff --git a/fml/doc/en/tutorial/message/chapter.sgml b/fml/doc/en/tutorial/message/chapter.sgml new file mode 100644 index 00000000..4c2f7192 --- /dev/null +++ b/fml/doc/en/tutorial/message/chapter.sgml @@ -0,0 +1,110 @@ +<!-- + $FML$ + $jaFML: chapter.sgml,v 1.5 2003/04/15 14:51:42 fukachan Exp $ +--> + +<chapter id="mail.manipulation"> + <title> + manipulate message (mail) + </title> + +<para> +See +<link linkend="module.mail.message"> +Mail::Message class +</link> +for the mail message object handling. Mail::Message class provides +fundamental methods. Several message related modules e.g. +Mail::Bounce, Mail::Delivery depend on this class. +</para> + + +<!-- ======================================= --> +<sect1> + <title> + Mail::Message class + </title> + +<para> +A mail consists of one header and one body. +A multipart mail consists of several parts. +</para> + +<para> +The mail delivery needs no detai of a message. +But the filter system needs to know the structure of the message. +</para> + +<para> +These modules depend +<link linkend="module.mail.message"> +Mail::Message class +</link> +to know the message structure. +For eample, Mail::Bounce, Mail::Delivery et.al. uses this. +</para> + +<para> +THe usage is as follows: +<screen> + my $fh = new FileHandle $file; + my $msg = Mail::Message->parse( { fd => $fh } ); + + use FML::Mailer; + my $obj = new FML::Mailer; + $obj->send( { + sender => $sender, + recipient => $rcpt, + message => $msg, + }); +</screen> +</para> + +</sect1> + + +<!-- ======================================= --> +<sect1> + <title> + Mail::Message::Parse class + </title> + +<para> +dummy. +</para> + +<para> +The real functions are within + <link linkend="module.mail.message"> + Mail::Message + </link> +class. +</para> + +</sect1> + + +<!-- ======================================= --> +<sect1> + <title> + Mail::Message::Compose class + </title> + +<para> +dummy. +This is an adapter for MIME::Lite class. +All thre request is forwarded to MIME::Lite class. +</para> + +<para> +See MIME::Lite class for the usage details. +</para> + +</sect1> + + +<!-- internationalization --> +§.message.nl; +§.message.discuss; + +</chapter> diff --git a/fml/doc/en/tutorial/module/create.sgml b/fml/doc/en/tutorial/module/create.sgml new file mode 100644 index 00000000..496255ca --- /dev/null +++ b/fml/doc/en/tutorial/module/create.sgml @@ -0,0 +1,120 @@ +<!-- + $FML$ + $jaFML: create.sgml,v 1.2 2003/04/15 14:51:42 fukachan Exp $ +--> + +<chapter id="module.create"> + <title> + Execise: create a new program + </title> + + +<para> +Consider creation of a simple scheduler listing tool in the &fml8; +framework. Here the program name is fmlsch and the cgi is fmlsch.cgi. +</para> + + +<sect1> + <title> + Case study: create a fmlsch + </title> + + +<sect2> + <title> + step 1: add fmlsch into installer configuration + </title> + +<para> +add fmlsch into $bin_programs in fml/etc/install.cf.in. +Run configreu to re-create fml/etc/install.cf. +</para> + +</sect2> + + +<sect2> + <title> + step 2: build a module + </title> + + +<para> +Write fml/lib/Calender/Lite.pm for the main functions of fmlsch. +</para> + +<para> +Import libraries if needed. +For fmlsch we import +HTML-CalendarMonthSimple-1.02.tar.gz +from CPAN. +</para> + +<para> +Also, install Date-Calc if your system has not it. +</para> + +</sect2> + + +<sect2> + <title> + step 3: modify FML::Process:: class + </title> + +<para> +Calender::Lite works mainly but we build the machanism how &fml8; +loads and runs it. We modify FML::Process:: for &fml8; bootloader to +call Calender::Lite. +</para> + +<para> +Firstly, write mandatory methods for fmlsch process in +fml/lib/FML/Process/Calender.pm. You need to create this module. +</para> + +<para> +Secondary, set up boot loader configuration. In the case of fmlsch, +the bootloader loads FML::Process::Calender. Define it in +fml/etc/modules. Set up fml/etc/command_line_options properly. +"command_line_options" file has a map between a command and the +command line options parsed by Getopt::Long(). +</para> + + +<para> +Create FML::Process::Calender module by copy-and-pasting other +FML::Process:: modules :-) However fmlsch has least functions, you +need to write FML::Process::Calender::run() method. For undefined +methods, fml loads FML::Process::Kernel functions (inheritence). +</para> + +</sect2> + +</sect1> + + +<sect1> + <title> + case study: fmlsch.cgi + </title> + + +<para> +The hacking is similar to fmlsch. The differnce is that the target to +modify is FML::CGI:: class. FML::CGI::Calender is a sub-class of +FML::Process::CGI. +</para> + +<para> +If undefined method is called, fml loads it from FML::Process::CGI or +FML::Process::Kernel. FML::Process::CGI uses CGI.pm to create a http +header et.al. If FML::Process::CGI functions are not enough, +FML::CGI:: module should support the lack. +</para> + +</sect1> + + +</chapter> diff --git a/fml/doc/en/tutorial/module/nativelanguage.sgml b/fml/doc/en/tutorial/module/nativelanguage.sgml new file mode 100644 index 00000000..57c3eb97 --- /dev/null +++ b/fml/doc/en/tutorial/module/nativelanguage.sgml @@ -0,0 +1,48 @@ +<!-- + $FML$ + $jaFML: nativelanguage.sgml,v 1.3 2003/04/15 14:51:43 fukachan Exp $ +--> + +<chapter> + <title> + Language dependent functions + </title> + +<para> +fml needs language dependent functions internally. Especially, JIS +to/from EUC conversion is used anywhere since. Japanese messages are +written in JIS code but programs are easy to use string in EUC-JP. +</para> + +<para> +See +<link linkend="message.nl"> +message internationalization +</link> +for the language dependence handling in messages. +</para> + + +<sect1> + <title> + Something::Language:: + </title> + +<para> +Language dependent module locates at Something::Language. +</para> + +<para> +For example, there are +<screen> +FML::Language::Japanese::String +Mail::Bounce::Language::Japanese +</screen> +The former provides Japanese dependent string functions. +The latter provides Japanese dependent error mail analyzer functions. +</para> + +</sect1> + + +</chapter> |
