[Hiki-dev] 新規ページのひな形機能

アーカイブの一覧に戻る

OZAWA Sakuro crout****@users*****
2003年 5月 12日 (月) 07:39:59 JST


さくです。

ページの新規作成時に、ひな形となるコンテンツを挿入した状態で編集作業に入
れるようにするプラグインを考えています。

仕様としては、

* TemplateDefinition という名前のページに、
:正規表現:ひな形ページ名
という定義リストの形でひな形ページを列挙。
例)
:^\d{4}-\d{2}-\d{2}$:DiaryTemplate

* 各ひな形ページの内容は整形済みテキストとして扱うこととし、
  各行の行頭空白を1文字削除して使用する。
  こうしないと、
{{bbs}}
と書いたひな形が本当に掲示板になってしまいます。

のような感じです。

で、どうやって実現してやろうか考えたのですが、各procからAmritaに渡すデー
タモデルにアクセスする手段がないので、条件に合致する場合にedit_proc内で
ひな形を挿入したページを保存し、そこへリダイレクトしてみることにしました。
コードは下記の通りです。

add_edit_proc {
  template_re = /^:(.*?):(.*)$/
  # 編集対象ページが空 && TemplateDefinitionページがある
  if****@db*****(@page).size == 0 && @db.exist?('TemplateDefinition')
    @db.load('TemplateDefinition').scan(template_re) do |re, tp|
      if Regexp.compile(re) =~ @page
        # ひな形を挿入して保存
        content =****@db*****(tp).gsub(/^ /, '')
        md5 =****@db*****(content)
        @db.save(@page, content, md5)
        # そこへ redirect
        url = %Q!#{$cgi_name}#{cmdstr('edit', "p=#{@page.escape}")}!
        redirect(@cgi, url)
      end
    end
  end
  nil
}

実際に動かしてみたところ、その時点までに生成済みのCGIオブジェクトの出力
にリダイレクトのための出力が混ざってわけのわからん結果になってしまいまし
た。何かうまい手段はないでしょうか?

data[:body]とかを直接いじくれるのが理想ですが、ある意味なんでもありにな
ってしまいそうで、手を加えるのを躊躇しています。

-- 
OZAWA Sakuro                   "Quidquid latine dictum sit, altum videtur."




Hiki-dev メーリングリストの案内
アーカイブの一覧に戻る