トップ «前の日記(2003年12月07日 (日)) 最新 次の日記(2003年12月09日 (火))» 編集

*Messages*

Search

書いてる人: しまだみつのぶ (aka. simm, saica)

最新情報URL: https://gouketsu.net/simm/d/

"8024402C"でたどり着かれた方はこちら: 「壁の内側からWindowsUpdateに失敗する


2003年12月08日 (月) [長年日記]

1 [Emacs][URL] Meadowのコードネーム

from 過負荷な日々(12/05)

railデータベース

この表からrailデータベースを自動作成すれば楽ができそう. HTMLを厳密にパーズするのは相当リソースがかかりそうなので, Hikiデータを読んでパースするのが確実かな.

不明なコードネーム

なお, 下のほうの不明なコードネーム, たしか, いただきものデータベースにはいっていたものを そのまま貼り付けただけだったように記憶してます. たしか, 送ってくださったの,kaoruさんだったように 記憶してますが, 結構昔の出来事なので, 定かではありません.

データベース自動作成よりも

こせきさんの「Tikiでは…」のくだりのほうがHack欲をかきたててしまった (^^;

2 [Hiki] 表の更新を簡単に

私の技量では Tiki の例のようなものはさくっと作ることはできないが, フォームに1行単位で入力できるフォームを提供するプラグインぐらいなら でっちあげることはできるので, やってみた.

 # $Id$

 ##require 'csv'

 def table_row_label
   '追加行'
 end

 def table_post_label
   '投稿'
 end

 add_body_enter_proc(Proc.new do
   @table_num = 0
   ""
 end)

 def table_form( cols = 60, style = 0 )
   cols = 60 unless cols.respond_to?(:integer?)
   style = 0 unless style.respond_to?(:integer?)
   style = 0 if style != 1

   @table_num += 1
   <<EOS
 <form action="#{$cgi_name}" method="post">
   <div>
     #{table_row_label}:
     <input type="text" name="row" size="#{cols}">
     <input type="submit" name="table" value="#{table_post_label}">
     <input type="hidden" name="table_no" value="#{@table_num}">
     <input type="hidden" name="c" value="plugin">
     <input type="hidden" name="p" value="#{@page}">
     <input type="hidden" name="plugin" value="table_post">
     <input type="hidden" name="style" value="#{style}">
   </div>
 </form>
 EOS
 end


 def table_post
   params     = @cgi.params
   table_no   = (params['table_no'][0] || 0).to_i
   rowstring  = params['row'][0]
   style      = params['style'][0].to_i

   return '' if rowstring.strip.size == 0

   lines = @db.load( @page )
   md5hex = @db.md5hex( @page )

   flag = false
   count = 1

   content = ''
   lines.each do |l|
     if /^\{\{table_form.*\}\}/ =~ l && flag == false
       if count == table_no
         content << l if style == 1
         if /^\|\|/ === rowstring then
           # wiki style table
           content << rowstring + "\n"
 ##        else
 ##          # CSV style table
 ##          rowstring << "\n" unless /\n\Z/ === rowstring
 ##          CSV::Reader.parse(rowstring) do |row|
 ##            content << "||" + row.to_a.join("||") +"\n"
           end
         end
         content << l if style == 0
         flag = true
       else
         count += 1
         content << l
       end
     else
       content << l
     end
   end

   @db.save( @page, content, md5hex ) if flag

 end

ダウンロードはこちらからどうぞ.

ほとんどcomment.rbのパクリだが, 気にしない.

設置方法

comment.rbと同じく

 {{table_form}}

とすると, 表をフォームの上に追加していく. 逆に下へ追加したければ

 {{table_form(60,1)}}

のように, 第二引数に1をつければよい.

フォームへの入力方法

編集領域と同様, "||"区切りで1行だけ入力する.

上記ソースのうち, "##"ではじまる行の先頭"##"を削除することで, Wikiフォーマット以外に, コンマ区切り(CSV)形式でも書くことができる. ただし, 要csv.rb.

コンマ区切りが有効の際は, 入力の先頭が

  • "||": Wiki形式
  • それ以外: CSV形式

と, 自動判定するようになっている.

TODO

やはり, 専用ページを用意して入力させるようなフォームはつくってみたいところ. しかし簡単にできるんかいな…

3 [rail] 乗車車両 (12/8)

出勤

Mi15+?(6415) → L80(8580) → VE51+X67(8117)

今日は下市口行祭の日らしい. 最近荒れている旧天局スレも, 祭の日ぐらいはまともな流れになるのだろうか.

帰宅: 天理駅まで徒歩

X57(8607) → KL04(3104) → MT21(6721)

本日のツッコミ(全1件) [ツッコミを入れる]
1 simm (2003年12月09日 (火) 03:31)

自己フォロー. 項目ごとに入力ボックスを用意したバージョンをつくりました.<br><br> http://pure.fan.gr.jp/hack/?TableFormPlugin


Information

更新情報取得方法

*Messages* の更新情報取得には、antenna.lirs もしくは index.rdfをご利用ください。 豪傑アンテナLIRSからも取得可能です。