Whatnew - Generate links of recently documents.

Access counter


NAME

Whatnew - 最近更新されたdocumentのLinkを生成する

$Id: Whatnew.pm,v 1.7 2002/04/20 13:48:24 T.Shigetome Exp $


SYNOPSIS

        use Whatnew;
        my($form) = new Whatnew;
        my(%config) = (
                'html_root'     =>      '/home/foo/public_html=http://www.any.com/~foo',
                'search'        =>      '/home/foo/public_html',
                'temp'          =>      '/home/foo/public_html/work/whatnew.tmp',
                'template'      =>      '/home/foo/public_html/work/template.html',
        );
        $form->ParseQuery();
        $form->SetParameter(\%config);
        $form->OutResponse();


DESCRIPTION

これはCGI program用moduleである。自動的に最新のペイヂへのLinkを作成する。 コンテンツが更新されると、それは自動的にLinkに追加される。 そして、そのLinkに更新情報を付け加えることもできる。 それはとても簡単で、HTML file中に更新情報をMETA tagを使って記述するだけである。

例...

        <META name="UpdateInfo" content="
                Second update information
                Also you can describe more than two lines.
        _ThIs_Is_A_BoUnDaRy_StRiNg_
                First update information
        _ThIs_Is_A_BoUnDaRy_StRiNg_
                It's NEW!!
        _ThIs_Is_A_BoUnDaRy_StRiNg_
        ">

上記 `_ThIs_Is_A_BoUnDaRy_StRiNg_' は更新情報の境界文字列として使用される。

CGI ARGUMENT

TこのmoduleはCGI programから次のように使われる。

        http://www.any.com/~foo/cgi-bin/sample.cgi?config=test&;func=disp
func
2つのfunctionが用意されている
disp
最新のペイヂのLinkをHTMLペイヂとして返す。通常はこのfunctionを使用する。

get
最新のペイヂのrecord fileを返す。 これは他のサーバーの情報と結合する為に使用する。 parameter中の `remote で使用される。

config
QUERY STRING中の `config'の値を指定する。 この値は、paramter setの選択のヒントとして使用できる。 Params.pmと共に使用される事を期待している。

METHOD

new([$cgi_object])
新しいインスタンスを作成する
        my($form) = new Whatnew;

CGIインスタンスは本moduleによって自動的に生成される。

or

        my($q) = new CGI;
        my($form) = new Whatnew($q);

SetParameter($rh_para)
を設定する。 $rh_para はハッシュテーブルのリファレンスかパラメータファイルを設定する。 もし、パラメータファイル名が指定されれば、パラメータファイルはParams.pmによって処理される。
        my($form) = new Whatnew($q);
        my(%config) = (
                'html_root'     =>      'file path=url path',
                'search'        =>      'search file path',
                'temp'          =>      'temporary file',
                'template'      =>      'HTML template',
                'remote'        =>      'http://www.another.server/cgi-bin/sample.cgi?config=configname&;func=get',
                'hidden'        =>      'hidden path',
                'mask'          =>      'regular expression for mask',
        );
        $form->SetParameter(\%config);
html_root
URL pathに対応するfile pathを指定する。 もし、複数の定義が必要ならば`;'で区切って記述できる。 その場合、間に空白文字を入れてはならない。

search
更新されたペイヂを検索するfile pathを指定する。 このmoduleは配下の全てのpathをチェックする。 もし、複数の定義が必要ならば`;'で区切って記述できる。 その場合、間に空白文字を入れてはならない。

temp
Temporary fileを指定する。 このmoduleは一時fileを生成する。

template
Link pageの雛型として使用されるテンプレートファイルを指定する。カスタマイズしてご使用ください

例...

        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
        <HTML lang="en">
        <HEAD>
        <META http-equiv="Content-Type" CONTENT="text/html; charset=ISO-8859-5">
        <META name="Author" content="Foo">
        <TITLE>What's NEW?</TITLE>
        <MEATA name="UpdateInfo" content="
                What's NEW template
        _ThIs_Is_A_BoUnDaRy_StRiNg_"
        >
        </HEAD>
        <BODY>
        <H1>What's NEW?</H1>
        <HR>
        <TABLE summary="NEW contents" rule="none" cellspacing="0">
        <!--
                Following comment statement will be replaced to new documents information.
                You can customize that.
                These keywords will be handled about associated document.
                Like as...
                %mtime% : Modified time
                %URL%   : URL
                %title% : Title in head block of that document
                %x-meta-updateinfo%
                        : Update information
                          It's described in head block of that document.
                          If you want to use this field, you must append it along specified format when you update document.
        -->
        <!-- NEW items
        <TR>
        <TD VALIGN="top">%mtime%</TD><TD><P><A HREF="%URL%">%title%</A></P><PRE>%x-meta-updateinfo%</PRE></TD>
        </TR>
        NEW items -->
        </TABLE>
        <HR>
        </BODY>
        </HTML>

remote
オプショナル パラメータ 他のWhatnew CGI programを `func=get'を使って指定する。 複数のサーバーがある場合、それぞれの更新情報を1つに結合することができる。 もし、複数の定義が必要ならば`;'で区切って記述できる。 その場合、間に空白文字を入れてはならない。

hidden
オプショナル パラメータ 隠しpathまたはfileを指定する。 そのpathとその配下は全て無視される。 もし、複数の定義が必要ならば`;'で区切って記述できる。 その場合、間に空白文字を入れてはならない。

T他にも隠す方法があり、更新情報として `NOPICK' と記述すればそのコンテンツは無視される。 通常この方法は使用すべきではない、この方法は処理をかなり重くする。

mask
オプショナル パラメータ maskする文字列を指定する。 もし、fileやpathがmatchした場合は無視される。 もし、複数の定義が必要ならば`;'で区切って記述できる。 その場合、間に空白文字を入れてはならない。

上記の区切り文字 `;' は Params.pm中の `$Params::delimiter' で定義される。

OutResponse()
`func'で指定されたfunctionに沿って更新されたペイヂの情報を返す。 .

config()
CGI query stringで指定された `config' の値を返す。 Params.pmと共に使用される事を期待している。 ;)

例...

sample.cgi

        use Whatnew;
        my($form)= new Whatnew;
        $form->ParseQuery();
        local($main::configname) = $form->config();
        $form->SetParameter("sample.par");
        $form->OutResponse();

sample.par

        ########################################################
        #if $main::configname eq 'test'
                #define CONFIG_NAME test
        #endif
        #define ROOTPATH /home/foo/public_html
        #define WORKPATH %ROOTPATH%/work
        #define HTML_ROOT http://www.any.com/~foo
        # 12*60*60
        #
        # define config1 parameters
        #
        #
        # File path to HTML root
        #
        %CONFIG_NAME% html_root{
                %ROOTPATH%=%HTML_ROOT%;
        };
        #
        # temporary file
        #
        %CONFIG_NAME% temp{
                %WORKPATH%/whatnew.tmp;
        };
        #
        # HTML template
        #
        %CONFIG_NAME% template{
                %WORKPATH%/template.html;
        };
        #
        # Common update information
        #
        %CONFIG_NAME% search{
                %ROOTPATH%;
        };
        #
        # No care directries
        #
        %CONFIG_NAME% hidden{
                %ROOTPATH%/debug;
        };
        %CONFIG_NAME%   mask{
                template\.html;
                test;
        };

charset($ocode)
$ocode は jcode::covert()の引数として与えられる。 もし、あなたのコンテンツが複数の文字コードが混在しているならば、それは文字化けの要因となるでしょう。 これはその様な問題を解決してくれる。

debug($debug_opt)
Debug状態をトグルする。 デフォルトではoffになっている。 4つのデバッグオプションが用意されている。
        $form->debug('configpara');
        $form->debug('remote');
        $form->debug('search');
        $form->debug('template');

デバッグ情報は標準エラー出力に出力される。 標準エラー出力を debuglog.pl か若しくは他の方法でリダイレクトすれば記録できる。

デバッグを完了すれば、このmoduleからデバッグコードを取り除く事ができる。 全てのデバッグコードは `#>>>DEBUG_CODE' で挟まれている。 striper.pl を使って削除できるだろう。

configpara
パラメータのデバッグ

remote
複数のServerとの結合表示に関するデバッグ

search
検索処理に関するデバッグ

template
Template fileの展開に関するデバッグ

Require modules

strict.pm, Carp.pm, CGI.pm, HTML::HeadParser.pm, Params.pm, Timestr.pm,

次のmoduleはremoteからgetする為に使用される。 もし、複数の更新情報を結合表示する場合、これらのmoduleをuseしなければならない。

LWP::UserAgent, HTTP::Request, HTTP::Message,


SEE ALSO

Params.pm, Timestr.pm, CGI.pm


AUTHOR

Tetsuya Shigetome, <t_shigetome@muf.biglobe.ne.jp>.


HISTORY

$Revision: 1.7 $
$Log: Whatnew.pm,v $ Revision 1.7 2002/04/20 13:48:24 T.Shigetome Compliant

History.pm

Some variable is globalised.

Revision: 1.6
Log: Whatnew.pm,v Revision 1.6 2002/04/14 15:25:03 T.Shigetome

Fixed bugs

o Sort order is not numerically.

Compliant Timestr.pm and Params.pm. I hope, it's given simplified to use parameter file.

Revision: 1.5
Log: Whatnew.pm,v Revision 1.5 2001/07/30 09:28:33 shige
 o Fixed problem of Server error 500 when get from remote.

Revision 1.4 2001/05/19 16:54:03 shige

 o Correct corrupt problem when comment avail after replace keyword.

Revision: 1.3
Log: Whatnew.pm,v Revision 1.3 2001/02/10 16:32:34 shige

o Change some comments.

Revision: 1.2
Log: Whatnew.pm,v Revision 1.2 2001/02/10 16:02:07 shige
 o Correct merge display problem.
 o Change to sepcify debug options.
 o Some new capables
    Support convert code.
    Support hide temporary.

Revision: 1.1
Log: Whatnew.pm,v Revision 1.1 2000/12/14 16:59:34 shige

First of Perl module version

 Whatnew - Generate links of recently documents.