#!/usr/bin/env ruby
# coding: utf-8

require "cgi"
require "pstore"

c = CGI.new(:accept_charset => "UTF-8")
name = c["name"]
cmt  = c["comment"]
time  = Time.now    # Time.nowで現在時刻を取得

# HTMLヘッダの出力
print "Content-type: text/html; charset=UTF-8\n\n"

print"<html><head><title>ひとこと掲示板</title></head><body>\n"

print"<h1>ひとこと掲示板</h1>\n"

bbs = PStore.new("data.db")
bbs.transaction do
  if bbs["root"] == nil
    bbs["root"] = Hash.new
  end
  data = bbs["root"]  # ここまではおきまり
  
  if name >"" && cmt > ""  # 名前とコメント、両方値があるなら登録
    data[name] = [time, cmt]  # 今日の日付とコメント
    
  end
  
  # フォーム出力
  print"<form method=\"POST\" action=\"./comment.rb\">\n"
  print '<p>

名前: <input name="name" type="text" maxlength="40"><br>
コメント <br>
<textarea name="comment" cols="40" rows="5">

</textarea><br>
<input type="submit" value="OK">
<input type="reset" value="reset"><br>
</p><hr>'

  # 既存のコメント出力(キー毎)
  print "<dl>\n"  # 定義環境開始
  for i in data.keys.sort{|x, y|
      data[y][0] <=> data[x][0]  # 日付の新しい順にソート
    }
    day = data[i][0]  # 第0要素が日付
    msg = data[i][1]  # 第1要素がコメント、それぞれ取り出す
    printf(" <dt> %s\n", i)  # キー(つまり飲んだものの名前)
    printf(" <dd> 記載日: %s<br>\n", day.strftime("%Y/%m/%d/ %X"))
    printf("      %s\n", msg)
  end
  print "</dl>\n"  # 定義環境終了
end# db.transaction 終わり

print "<hr></body>\n</html>"
