掲示板
とりあえずできた。→これ
前回の一行掲示板を元に、
クラスをつくって、複数行の書き込みをOKにして、CSSをつけてみた。
見た目はあんまりよくないし、ファイルロックもしてないけど、
まあ最初はこんなもんでしょーってことで。
以下がソース。
bbs.cgiがこれ。
#!/usr/local/bin/ruby require 'cgi' require 'kconv' print "Content-Type: text/html\n\n" class BBS def initialize(log_filename = 'bbs.log') @cgi = CGI.new @log_filename = log_filename @MAX_LOG = 10 @log = [] end # ログファイルの読み込み def read_log_file open(@log_filename){|f| f.each{|l| @log << l.tosjis break if @log.size == @MAX_LOG } } end # ログファイルへの書き込み def write_log_file text = @cgi['text'].tosjis return unless text.size > 0 @log.unshift "#{lf2br(text)}<br />" open(@log_filename, 'w'){|f| c = 0 @log.each{|l| l.chomp! f.puts "#{lf2br(l)}" c += 1 break if c == @MAX_LOG } } end def lf2br(str) str.gsub!(/\r\n/, '<br />') str.gsub!(/\r/, '<br />') str.gsub!(/\n/, '<br />') str end def output_html # HTML print <<HTML <html> <head> <title>掲示板</title> <link href="css/bbs.css" rel="stylesheet" /> </head> <body> <div id="title"><a href="bbs.cgi">BBS</a></div> <div id="form"> <form method="GET"> <textarea name="text" cols="40" rows="5"></textarea><br /> <input type="submit" value="書き込み"/> </form> </div> <div id="log"> HTML @log.each{|l| puts %q(<div id="log-item">) puts l puts %q(</div>) } print <<HTML </div> </body> </htm> HTML end end log_filename = 'bbs.log' bbs = BBS.new(log_filename) bbs.read_log_file bbs.write_log_file bbs.output_html
そしてbbs.cssがこれ。
#title { border-bottom: 2px solid #491E00; color: #491E00; font-family: Verdana, Arial, sans-serif; font-size: 200%; font-weight: bold; margin: 0px 200px 10px; padding-bottom: 3px; text-align: center; } a { text-decoration: none; color:#491E00; } #form { text-align: center; } #log { background-color: #D0D0D0; color: #000000; font-family: 'MS Gothic',monospace; margin: 0px 230px 0px; overflow: auto; padding: 1em; } #log-item { background-color: #F0F0F0; color: #000000; font-family: 'MS Gothic',monospace; margin: 10px 50px 10px; overflow: auto; padding: 5px; }
Rubyが動くサーバならどこでも動くはず。
cssはcgiと同じ階層にcss専用のディレクトリをつくってその中に置く。
追記
改行を
にするところなんかを少し書き直した。
textareaで改行が効かなくなってなんだこれ!って思ったら、
Firefoxがおかしくなっていたのが原因だった。
まぎらわしいわよっ!