=head スクリプト名 memol_edit.cgi - メモ作成編集(「メモる」システムの CGI の一つ) =head 概要 HTML フォーム等からの変数入力に基づいて、memol 言語による HTML メモのテキストフォームを生成する。保存時に、memol.cgi を起動し、HTML メモを生成する。 =head 更新履歴 2004-11-19 rakumemo.cgiの引用部分の行をパラグラフとして出力していたのを
タグを付加するだけに変更。(ver: 1.02) 2004-11-07 更新日記検索(renewal_r.cgi ver: 1.01)の検索結果記事のメモ作成リンクからメモデータを取得できるように追加。(ver: 1.01) =cut require 'cgi-lib.pl'; &ReadParse(*in); # 環境変数の取得とメモを格納するディレクトリ名の設定 $docroot = $ENV{'DOCROOT'};# HTTP サーバーのドキュメント格納ディレクトリ $cgidir = $ENV{'CGIDIR'};# HTTP の CGI を格納する相対パス $memodir = "memo";# メモ格納ディレクトリ名 # クリップメモを使う場合に備えて DBM データベースをオープンする。 dbmopen CLIPMEMO, 'clipmemo', 0666; # メモ入力 HTML 先頭部分 CGI 出力 print < Memol
メモる
TOP # momo.html のフォームからのデータに基づいてメモファイル名を設定する # $in{'today'} の値が yes であれば今日の日付のメモを作成する # $in{'date'} の値があれば、その値の日付のメモを作成する # いずれでもなければ、現在の日付のメモを指定する if($in{'today'} eq 'yes'){ $date = &date; }elsif($in{'selecteddate'}){ $date = $in{'selecteddate'}; }elsif($in{'date'}){ $date = $in{'date'}; }else{ $date = &date; } if($date !~ /^\d{4}-\d{2}-\d{2}$/){ print "メモの日付、${date}が不正です。"; exit; } $infile = "memo_${date}.html";# メモファイル名の設定 # メモ入力フォーム先頭部分の CGI 出力 # メモファイル名 $infile は CGIのパス名の後に / で区切って渡される # memol.cgi は環境変数 PATH_INFO から /$infile として受け取る print <
FOOTER # クリップメモの DBM データベースのデータを空にして初期化する %CLIPMEMO = (); # クリップメモの DBM データベースを閉じる dbmclose CLIPMEMO; sub printmemol{ # memo.html の「今日」のラジオボタンからの入力があれば、 if($in{'today'}){ print "c: memo\n"; print "t: \n\n"; }elsif($in{'rndate'}){ print "c: memo\n"; print "t: $in{'rndate'}: $in{'title'}\n"; print "p: [u: $in{'rnurl'};t: $in{'rndate'}: $in{'title'}]\n"; # memo.html の「指定する日」のテキストフォームからの入力があれば、 }elsif($in{'selecteddate'}){ print "c: memo\n"; print "t: \n\n"; # 「お気に入り」検索結果から起動する場合、 # date、url、title のデータを受け取る }elsif($in{'url'}){ print "c: favor\n"; print "t: $in{'title'}\n"; print "p: [u: $in{'url'}]\n\n"; # 「マイドキュメント」検索結果から起動する場合、 # date、docurl、title のデータを受け取る }elsif($in{'docurl'}){ print "c: file\n"; print "t: $in{'title'}\n"; print "p: [u: $in{'docurl'}]\n\n"; # 「註釈を書く」のリンクから起動する場合、 # annot、title、name のデータを受け取る }elsif($in{'annot'}){ print "c: annot\n"; print "t: $in{'annot'}:「$in{'title'}」のメモへの註釈\n"; print "p: [u: /memo/memo_$in{'annot'}.html#$in{'name'}]\n\n"; # メモカレンダーから起動する場合、 # date、sched のデータを受け取る }elsif($in{'sched'}){ print "c: sched\n"; print "t: \n"; print "p: \n\n"; # メモ作成・編集 HTML のメニュー選択フォームから起動する場合、 # category のデータを受け取る }elsif($in{'category'}){ print "c: $in{'category'}\n"; print "t: \n"; print "p: \n\n"; # クリップメモから起動する場合、 # データ取得の詳細は clipmemo.cgi 等を参照すること # clipmemo.cgi からのデータは DBM データベースから取得する }elsif($CLIPMEMO{'url'} || $CLIPMEMO{'title'} || $CLIPMEMO{'cite'}){ print "c: memo\n"; if($CLIPMEMO{'title'}){ print "t: $CLIPMEMO{'title'}\n"; }else{ print "t: \n"; } if($CLIPMEMO{'url'}){ print "p: [u: $CLIPMEMO{'url'}]\n"; } if($CLIPMEMO{'cite'}){ $CLIPMEMO{'cite'} =~ s/^(.+)$/$1<\/cite>/s; @pgs = split(/\n+/, $CLIPMEMO{'cite'}); foreach $pg (@pgs){ print "\t$pg
\n"; } print "
\n"; } } } # yyyy-mm-dd 形式で現在の日付を返す sub date{ my($mday,$mon,$year) = (localtime)[3..5]; $mon += 1; $year += 1900; return sprintf("%4d-%1.2d-%1.2d", $year, $mon, $mday); }