summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfukachan <fukachan>2003-07-28 15:20:17 +0000
committerfukachan <fukachan>2003-07-28 15:20:17 +0000
commit13ef97114ca3f44fe534d0f4228c9e21b9febd8e (patch)
tree3b0874fce4fe8676d34f2213950b7e9c959e7d34
parentd9c8ecee3855d3d88842a4b842c8f4ea2013c8f6 (diff)
downloadfml8-13ef97114ca3f44fe534d0f4228c9e21b9febd8e.tar.gz
fml8-13ef97114ca3f44fe534d0f4228c9e21b9febd8e.tar.bz2
fml8-13ef97114ca3f44fe534d0f4228c9e21b9febd8e.zip
trasnlated
-rw-r--r--fml/doc/en/tutorial/digest/chapter.sgml158
-rw-r--r--fml/doc/en/tutorial/message/chapter.sgml110
-rw-r--r--fml/doc/en/tutorial/module/create.sgml120
-rw-r--r--fml/doc/en/tutorial/module/nativelanguage.sgml48
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 -->
+&sect.message.nl;
+&sect.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>