ぐらめぬ・ぜぷつぇんのはてダ(2007 to 2011)

2007年~2011年ごろまで はてなダイアリー に書いてた記事を引っ越してきました。

HTMLプラグイン修正、その他

yb_naviのコードが古かったので直し始めたら、テスト用のページを作ったりしていく過程であっちにもこっちにもバグが見つかってへこんだ。

  • テキスト型テンプレートを元に新規作成しようとした時に、テンプレートに設定したフォーマットやテキストが新規作成時に引き継がれていない。
    • → yb_datatype_Text::format_new_data()に第二引数 $template をデフォルトnullで追加。設定されていれば、formatとtextdataを引き継ぐ。
    • → text_build_specific_form_on_new_tpl.html でSmartyにassignしていない変数 $template を参照してしまっていた。$dataに修正。
  • yb_ls, yb_recentで古いdaoデザインを使っていた為、無駄にyb_dao_Data::find_by_id()が呼ばれていた。
    • → find_by_id()には複数のIDをarray()で渡せるようになったので、それにより一度で取得するよう修正。

あと少し嵌ったのが、yb_lsとyb_naviでタイトルのソート順がずれていた点。
yb_lsだと、

test/L1_A
test/L1_B
test/L1_A/L2_A
test/L1_A/L2_B

みたいになってしまうが、yb_naviだと(デバッグしてみたら)

test/L1_A
test/L1_A/L2_A
test/L1_A/L2_B
test/L1_B

と言う風に期待道理にソートされている。

で、natsort()使ってるのでそこら辺を覗いてみたら、yb_naviだと ID => TITLE の関係のassoc-arrayになっていたのに対し、yb_lsだと TITLE => ID の並びになってしまっていた。
一見それっぽく見えていたのだが、実際はキーと値の関係が逆転しているので yb_ls の間違い。というわけで修正。

あとHTMLプラグインで動かしていないのが yb_more か。ああ、そういえばyb_linkもまだ本格的には動かしてないなぁ。

それと、http://en.yummy.stripper.jp/?eid=987602 で知ったのだけれどちょうどログイン・ログアウトが「戻り先をパラメータ(URLクエリ)から取得」のパターンで、不覚にもredirect先のチェックを怠っていた。後で入れないと。

datatype絡みは作るのも動作確認するのも大変だったので、まだ抜けがありそうだなぁ。Smartyの中からSmartyプラグイン呼び出して、さらにその中からまたdatatypeのI/F呼んで、そこからさらにdatatype用のSmartyテンプレートを出力したりというかなりネストの深い厭らしい作りになってしまったので・・・。

動かしながら見ていくしかないなぁ。前述の対策も、Text型のformat_new_data()は対応したけど、他の型では対処してない。PHPの場合は呼びだし側の引数が多くても、無視されるだけなので。動かしつつになるか。